Orijinal Anahtarını tutarken PHP Diziler Patlayan

3 Cevap php

Ben karmaşık kod sürü olmadan aşağıdakileri nasıl yapabilirim?

  1. (Ben tür bu adımı nasıl biliyorum) PHP bir dizinin her değerini patlayabilir
  2. Ilk kısmını atın
  3. (Ben sadece iki parça olacak biliyorum) ikinci bölümü için orijinal anahtar tutun

Bu, ben şu anlama gelir:

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

olur

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

Ben sadece fark, ben bir için ile bu yapabileceğini ... Her döngü? Eğer öyleyse, sadece evet cevap. Ben nerede başlar biliyor sonra bunu kodu.

3 Cevap

Verilen bu:

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

İşte bunu nasıl:

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

Bunu yapabileceği başka bir yolu bu gibi olurdu:

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

... Veya substr() ve strpos() bir arada kullanın

Bu deneyin:

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

Rağmen, gerçekten, ne soruyorsun mantıklı değil. Eğer iki parça olduğunu biliyorum, muhtemelen bu daha yakın bir şey istiyorum:

list(,$what_i_want) = explode('|','A|B',2);

Eğer başlamak dizi:

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

Kodlayarak bir yolu:

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);

Not: Bu $array farklı bir dizi oluşturur.

Bu nedenle $array == $prime fakat is not $array === $prime