Извлечение значений из массива для замены числового ключа по умолчанию - PullRequest
0 голосов
/ 28 марта 2012

У меня есть некоторые данные в базе данных в следующем формате:

Description~Level||Description~Level||

Я хочу преобразовать это в массив, где description - это Key & Level - значение массива.

$perso1 = explode('||', $myLevels['perso']);
$perso = array_slice($perso1, 0 , -1);

Пока я сделал это, и он возвращает:

Array ( [0] => ffghtr~54644
        [1] => ffghtr~54644
        [2] => ffghtr~54644
        [3] => ffghtr~54644
        [4] => ffghtr~54644
        [5] => ffghtr~54644 ) 

Теперь я не могу найти способ заменить ключи массива (0,1,2 и т. Д.) Моим описанием.

Есть идеи?

Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 28 марта 2012
$tmp = explode('||', $myLevels['perso']);
foreach ($tmp as $str) {
    // this check is to remove empty elements from the list .. 
    // because your list ends with "||" there is a last empty element
    if(strpos($str, "~") === false) continue;
    // split by "~" into $key and $value
    list($key, $value) = explode("~", $str, 2);
    $result[$key] = $value;
}
print_r($result);

Обратите внимание, что в опубликованном примере у вас всегда один и тот же ключ: "ffghtr".

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

0 голосов
/ 28 марта 2012
$array = Array ( [0] => ffghtr~54644
    [1] => ffghtr~54644
    [2] => ffghtr~54644
    [3] => ffghtr~54644
    [4] => ffghtr~54644
    [5] => ffghtr~54644 ) 

$new_array = new Array();
foreach($array as $a)
     $new_array[(split('~',$a))[0]] = (split('~',$a))[1]

Таким образом, new_array должен быть в той форме, которую вы хотите. На самом деле я не тестировал код, но вы поняли. Обратите внимание, что отправленный вами массив всегда имеет одинаковый ключ: ffghtr.

Так что у вас получится новый массив только одного элемента ...

...