Взрыв массива в PHP с сохранением оригинального ключа

Как я могу сделать следующее без большого количества сложного кода?

  1. Разбить каждое значение массива в PHP (я вроде знаю, как сделать этот шаг)
  2. Откажитесь от первой части
  3. Сохраните оригинальный ключ для второй части (я знаю, что будет только две части)

Под этим я подразумеваю следующее:

$array[1]=blue,green
$array[2]=yellow,red

становится

$array[1]=green //it exploded [1] into blue and green and discarded blue
$array[2]=red // it exploded [2] into yellow and red and discarded yellow

Я только что понял, могу ли я сделать это с ... для каждого цикла? Если так, просто ответьте да. Я могу написать код, когда узнаю, с чего начать.

13.10.2009 00:02:27
Вы взрываете строку, а не массив
nickf 13.10.2009 00:04:37
Приведите какой-то пример, то, что вы описываете, не имеет смысла.
MitMaro 13.10.2009 00:05:31
4 ОТВЕТА
РЕШЕНИЕ

учитывая это:

$array[1] = "blue,green";
$array[2] = "yellow,red";

Вот как это сделать:

foreach ($array as $key => $value) {
    $temp = explode(",", $value, 2);  // makes sure there's only 2 parts
    $array[$key] = $temp[1];
}

Другой способ, которым вы могли бы сделать это, был бы так:

foreach ($array as $key => $value) {
    $array[$key] = preg_replace("/^.+?,$/", "", $value);
}

... или использовать комбинацию substr()иstrpos()

4
13.10.2009 02:26:16
илиlist(,$array[$key]) = explode(',',$value,2);
mpen 13.10.2009 06:36:44

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

$arr = explode(',','a,b,c');
unset($arr[0]);

Хотя, на самом деле, то, что вы спрашиваете, не имеет смысла. Если вы знаете, что есть две части, вы, вероятно, хотите что-то ближе к этому:

list(,$what_i_want) = explode('|','A|B',2);
1
13.10.2009 00:16:06
foreach ($array as $k => &$v) {
    $v = (array) explode(',', $v);
    $v = (!empty($v[1])) ? $v[1] : $v[0];
}
0
13.10.2009 00:38:35
Я array_shiftтоже собирался предложить , но документ говорит, что он перенумерует ваши ключи (если они числовые). Взрыв генерирует числовые ключи.
mpen 13.10.2009 00:34:24

Массив, с которого вы начинаете:

$array[1] = "blue,green";
$array[2] = "yellow,red";

Один из способов его кодирования:

function reduction($values)
{
    // Assumes the last part is what you want (regardless of how many you have.)
    return array_pop(explode(",", $values));
}

$prime = array_map('reduction', $array);

Примечание: это создает другой массив, чем $array.

Поэтому $array== $primeно не $array ===$prime

0
13.10.2009 00:52:10