我有一个带有'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");
答案 0 :(得分:28)
答案 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);
?>
也了解,
爆炸: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)
警告强> 我认为像你这样存储流派是一个非常糟糕的设计
您将如何更新数据? 每个简单的SQL操作都将是一场噩梦,而不是这样,花时间去纠正你的设计,例如你可以简单地从流派创建一个专用的表 创建一个实体表,将电影与 [1,N] 类型相关联
停止使用mysql_ *函数,原因有多种:完全删除,正式弃用,...对于详尽的列表,您可以阅读此帖子Why shouldn't I use mysql_* functions in PHP?,而不是mysqli_*或PDO < / p>
如何按流派检索电影?ID | type
------------
1 | Comedy
2 | Horror
3 | Mangas
4 | ...
5 | Animation
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)
试试这个
通过多个数组:
<?
$sql = "SELECT moviename,genre FROM movieHosting";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
/* fetched value */
$moviename = $row['moviename'];
$genre= $row['genre'];
?>
通过单个数组生成$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
)