存储信息并拉出阵列

时间:2016-02-28 00:16:18

标签: php sql

我有一个带有'genre'行的数据库,其中包含所有类型的电影,这个类型的电影被空格分隔,就像这样一个例子

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");

8 个答案:

答案 0 :(得分:28)

您是否尝试过使用explode功能?

类似的东西:

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

答案 1 :(得分:5)

这更接近你的逻辑。

$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

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

答案 2 :(得分:4)

了解这些并相应地使用。

<?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

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

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

分裂现在已被删除。

答案 3 :(得分:3)

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

OUT PUT

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

 Animation,Comedy,Horror

答案 4 :(得分:3)

警告
停止使用mysql_ *函数,原因有多种:完全删除,正式弃用,...对于详尽的列表,您可以阅读此帖子Why shouldn't I use mysql_* functions in PHP?,而不是mysqli_*PDO < / p>

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

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

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

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

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

答案 5 :(得分:3)

尝试使用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" }

答案 6 :(得分:-1)

试试这个

  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);
    }
    ?>
    

答案 7 :(得分:-2)

$genreArray = preg_split("/[\s,]+/", "Animation Comedy Horror");
print_r($genreArray );

输出:

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