PHP: получить текст через запятую - PullRequest
2 голосов
/ 18 апреля 2009

У меня многомерный массив .. Примерно так, например:

Array (
    [0] => Array
        (
            [title] => Star Trek - Viaje a las estrellas
            [country] => Venezuela, Spain, long title, poster title
        )

    [1] => Array
        (
            [title] => Viaje a Las Estrellas
            [country] => Venezuela
        )
)

Я хочу получить текст между запятыми из [страны] и вставить каждый элемент в отдельные индексы, например:

Array (
    [0] => Array
        (
            [title] => Star Trek - Viaje a las estrellas
            [country] => [0] => Venezuela
                         [1] => Spain
                         [2] => long title
                         [3] => poster title
        )

    [1] => Array
        (
            [title] => Viaje a Las Estrellas
            [country] => Venezuela
        )
)

Возможно, расположение массива неверно, но я просто хочу объяснить вам, что мне нужно сделать. Обратите внимание, что не всегда [страна] содержит элементы, разделенные запятыми, иногда это просто один элемент.

Как я могу это сделать?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 18 апреля 2009

Попробуйте использовать explode() для элемента страны. Вы можете использовать разделитель ", ", так как это значения через запятую.

Один из способов сделать это (который аналогичен тому, как предлагали другие):

// Assuming that $data contains your multidimensional array...
for ($i = 0; $i < count($data); $i++)
{
    if (strstr($data[$i]['country'], ', '))
    {
        $data[$i]['country'] = explode(', ', $data[$i]['country']);
    }
}

Кроме того, обратите внимание, что вам не нужно использовать strpos() - strstr() отлично работает здесь.

1 голос
/ 18 апреля 2009

Вы можете использовать функцию preg_split и регулярное выражение для разбиения строки:

foreach ($array as $key => $item) {
    if (strpos($item['country'], ',') !== false) {  // check if string contains a comma
        $array[$key]['country'] = preg_split('/,\s*/', $item['country']);
    }
}
0 голосов
/ 19 апреля 2009
$a = Array (
    0 => Array
        (
            "title" => "Star Trek - Viaje a las estrellas",
            "country" => "Venezuela, Spain, long title, poster title"
        ),

    1 => Array
        (
            "title" => "Viaje a Las Estrellas",
            "country" => "Venezuela"
        )
);
$res = array();    
    foreach($a as $k => $v){
        foreach($v as $key => $value){
            switch($key){
                case "country":                                
                    $r = split(",", $value); 
                    foreach($r as $index => $val){
                        $res[$k][$key][$index] = trim($val);
                    }
                  break;
                default:
                    $res[$k][$key] = $value;
                break;
            }
        }
    }

    print_r($res);

выход:

Array
(
    [0] => Array
        (
            [title] => Star Trek - Viaje a las estrellas
            [country] => Array
                (
                    [0] => Venezuela
                    [1] => Spain
                    [2] => long title
                    [3] => poster title
                )
        )
    [1] => Array
        (
            [title] => Viaje a Las Estrellas
            [country] => Array
                (
                    [0] => Venezuela
                )
        )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...