Ответ 1
Вы пытались использовать функцию explode?
Что-то вроде:
$genreArray = explode(" ", $row->genre);
У меня есть база данных со строкой '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");
Вы пытались использовать функцию explode?
Что-то вроде:
$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
preg-split: http://php.net/manual/en/function.preg-split.php
split: http://php.net/manual/en/function.split.php
раскол теперь лишен.
$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
ПРЕДУПРЕЖДЕНИЕ
Прекратите использование функций mysql_ * по нескольким причинам: полностью удалены, официально устарели,... и для исчерпывающего списка вы можете прочитать эту тему Почему бы мне не использовать функции mysql_ * в PHP?, вместо этого вы можете использовать mysqli_ * или PDO
Я думаю, что это очень плохой дизайн для хранения жанра, как вы это делаете
Как вы будете обновлять свои данные?
Как получить фильмы по жанрам?
Каждая простая операция SQL будет кошмаром, а не тратить время на исправление вашего desgin, например, вы можете просто создать выделенную таблицу из жанра
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" }
Попробуйте это
Через несколько массивов:
<?
$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);
}
?>
$genreArray = preg_split("/[\s,]+/", "Animation Comedy Horror");
print_r($genreArray );
Выход:
Array
(
[0] => Animation
[1] => Comedy
[2] => Horror
)