как использовать взорваться? - PullRequest
0 голосов
/ 24 ноября 2011

Итак, у меня есть этот php:

<?php
if (isset($_COOKIE["currentsearchctrl"])) {
    $cookz = $_COOKIE["currentsearchctrl"];
    $data = explode(';', $cookz, -1);
    $newdata = array();

    foreach($data as $value){
        $newdata[] = explode(':', $value, -1);
    }    
    print_r($newdata);

} else { }
?>

Файл cookie, который читает php:

% 20Rod% 20Stewart% 20% 3A% 2059088763306% 3B% 20LED% 20Zeppelin% ​​20Official% 20% 3A% 20131572223581891% 3B% 20Lynyrd% 20Skynyrd% 20% 3A% 206983887641% 3B% 20Black% 20Sabbath% 20% 3A% 2056848544614% 3B

но print_r выводит:

Array ( [0] => Array ( [0] => Rod Stewart ) [1] => Array ( [0] => Led Zeppelin Official ) [2] => Array ( [0] => Lynyrd Skynyrd ) [3] => Array ( [0] => Black Sabbath ) )

Идентификатор отсутствует. Мне нужно было быть. Массив ([0] => Массив ([0] => Род Стюарт, [1] => 1200420) [1] => Массив ([0] => Led Zeppelin Official, [1] => 110024294) ...

Чтобы помочь, это вывод print_r ($ data):

Array ( [0] => Rod Stewart : 59088763306 [1] => Led Zeppelin Official : 131572223581891 [2] => Lynyrd Skynyrd : 6983887641 [3] => Black Sabbath : 56848544614 )

Может ли кто-нибудь помочь?

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Я думаю, это то, что вы пытаетесь сделать:

$data = array (0 => "Rod Stewart : 59088763306", 1 => "Led Zeppelin Official : 131572223581891", 2 => "Lynyrd Skynyrd : 6983887641", 3 => "Black Sabbath : 56848544614" );


$data = array_map(function($item){
    list($artist, $id) = explode(' : ', $item);
    return array('id'=>$id, 'artist'=>$artist);
}, $data);

print_r($data);

выход

Array
(
    [0] => Array
        (
            [id] => 59088763306
            [artist] => Rod Stewart
        )

    [1] => Array
        (
            [id] => 131572223581891
            [artist] => Led Zeppelin Official
        )

    [2] => Array
        (
            [id] => 6983887641
            [artist] => Lynyrd Skynyrd
        )

    [3] => Array
        (
            [id] => 56848544614
            [artist] => Black Sabbath
        )

)
1 голос
/ 24 ноября 2011

Почему бы вам не попробовать регулярные выражения?

<?php
if (isset($_COOKIE["currentsearchctrl"])) {
    $cookz = urldecode($_COOKIE["currentsearchctrl"]);
    preg_match_all("#(?P<artist>(?:\w|\s)+)\s:\s(?P<id>\d+)#", $cookz, $matchs, PREG_SET_ORDER);    
    print_r($matchs);
} else { }
?>

РЕДАКТИРОВАТЬ: Извините, я не заметил, что имя не было полным

Пример: preg_match_all

0 голосов
/ 24 ноября 2011

используйте serialize () и unserialize ()

$data = serialize($cookz);

Сериализующая строка обеспечивает сохранение точной структуры в строке для последующего восстановления.

...