存储信息并在阵列中拉出


store info and pull out in array

>我有一个数据库,其中有一行"流派",其中包含由空格分隔的电影的所有类型的流派,例如

Animation Comedy Horror

它们都是不同的流派,所以需要将它们从数据库中提取出来,并根据它们的流派放入一个数组中,我最初开始编写这个:

<?
sql = "SELECT moviename,genre FROM movieHosting";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
?>

但不久之后我很快意识到,如果我这样做,每个流派都需要单独放入数组中

$genreArray = array($row->genre);

但这行不通,它会生成一个数组,例如

$genreArray = array("Animation Comedy Horror");

但它需要生成

$genreArray = array("Animation","Comedy","Horror");

你试过使用爆炸函数吗?

像这样:

$genreArray = explode(" ", $row->genre);

这里更接近你的逻辑。

$string = 'Animation Comedy Horror';
    $genra = explode(" ", $string);
    print_r($genra); //Array ( [0] => Animation [1] => Comedy [2] => Horror )
    echo $genra[0]; //Animation
    echo '<hr>'; // OR
    foreach($genra as $value){
        echo $value . '<br>';
    }
// Output
Animation
Comedy
Horror

希望我们的回答能为您的问题带来更多澄清。

理解这些并相应地使用。

<?php
    $str = "Animation Comedy Horror";
    $str_arr = explode(' ', $str);
    print_r($str_arr);
    $str_arr = split(' +', $str);
    print_r($str_arr);
    $str_arr = preg_split('/ +/', $str);
    print_r($str_arr);
?>

检查这个 : https://eval.in/532527

还了解,

爆炸 : http://php.net/manual/en/function.explode.php

孕分 : http://php.net/manual/en/function.preg-split.php

拆分 : http://php.net/manual/en/function.split.php

斯普利特现在被剥夺了。

   $result = preg_split("/['s,]+/", "Animation Comedy Horror");
    print_r($result );
    print_r(implode(",",$result));

输出

 Array ( [0] => Animation [1] => Comedy [2] => Horror ) 
 Animation,Comedy,Horror

WARNING
停止使用 mysql_* 函数,原因有多种:完全删除、正式弃用、...对于详尽的列表,您可以阅读此线程为什么我不应该在 PHP 中使用 mysql_* 函数?,而是您可以使用 mysqli_* 或 PDO

我认为像你这样存储流派是一个非常糟糕的设计
您将如何更新数据 ?
如何按流派检索电影?

每个简单的SQL操作都将是一场噩梦,而不是这个,花时间纠正你的设计,例如你可以简单地从流派创建一个专用的表

ID | type
------------
1  | Comedy
2  | Horror
3  | Mangas
4  | ... 
5  | Animation

并创建一个实体表,将电影与 [1, N] 类型相关联

MovieId | GenreId
-----------------
2       | 1
2       | 2
2       | 5

尝试使用 PHP 的 explode() 函数。 此函数需要 2 个参数、一个分隔符和一个字符串。 分隔符应该是您要在字符串中查找以分隔项目的内容。 在实践中,这看起来像:

$genreArray = explode(' ', $row->genre);

现在$genreArray看起来像这样(从var_dump($genreArray)生成的输出):

array(3) { [0]=> string(9) "Animation" [1]=> string(6) "Comedy" [2]=> string(6) "Horror" }

试试这个

  1. 通过多个阵列:

    <?
    $sql = "SELECT moviename,genre FROM movieHosting";
    $query = mysql_query($sql);
    $row = mysql_fetch_array($query);
    /* fetched value */
    $moviename = $row['moviename'];
    $genre= $row['genre'];
    ?>
    
  2. 通过单个数组产生类似$genreArray = array("Animation","Comedy","Horror");的结果

    <?
    $sql = "SELECT moviename,genre FROM movieHosting";
    $query = mysql_query($sql);
    $row = mysql_fetch_array($query);
    /* fetched value */
    $array =array();
    foreach($row as $r){
        $moviename = $r['moviename'];
        $genre = $r['genre'];
        $array_push = array_push($array,$moviename,$genre);
        print_r($array_push);
    }
    ?>
    
$genreArray = preg_split("/['s,]+/", "Animation Comedy Horror");
print_r($genreArray );

输出:

Array
(
    [0] => Animation
    [1] => Comedy
    [2] => Horror
)