Подтвердить что ты не робот

Хранить информацию и выходить в массив

У меня есть база данных со строкой '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");
4b9b3361

Ответ 1

Вы пытались использовать функцию explode?

Что-то вроде:

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

Ответ 2

Вот ближе к вашей логике.

$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

Надеемся, что наши ответы принесут больше разъяснений вашей проблеме.

Ответ 3

Понять их и использовать соответственно.

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

раскол теперь лишен.

Ответ 4

   $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

Ответ 5

ПРЕДУПРЕЖДЕНИЕ
Прекратите использование функций 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

Ответ 6

Попробуйте использовать функцию 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" }

Ответ 7

Попробуйте это

  • Через несколько массивов:

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

Ответ 8

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

Выход:

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