Neden bir dizide bir öğe ayarı olacak ve farklı bir dizide bir öğe ayarı sonra unsetting?

4 Cevap php

Hangi şartlar altında olur

$array[$index] = $element;

ve

unset($array[$index]);
$array[$index] = $element;

farklı olabilir?

Benim dizide herhangi bir referans kullanarak değilim varsayarsak, bu mantıksal olarak eşdeğerdir?

4 Cevap

$ Dizin değilse sayısal ikinci varyant her dizinin sonuna eleman eklemek istiyorum, bu yüzden anahtarları sırası değişmiş olacak.

unset($array[$index]);

$ dizin $ dizi içinde bulunamazsa, bir E_NOTICE artıracaktır. Bu aynı görünüyor onun dışında.

Önce bir anahtar kaldırmak ve sonra yeniden eklerseniz sırası değişti:

$arr = array("foo1" => "bar1", "foo2" => "bar2");
$arr["foo1"] = "baz";
print_r($arr);


$arr = array("foo1" => "bar1", "foo2" => "bar2");
unset($arr["foo1"]);
$arr["foo1"] = "baz";
print_r($arr);

Çıktı:

Array
(
    [foo1] => baz
    [foo2] => bar2
)

Array
(
    [foo2] => bar2
    [foo1] => baz
)

Eğer (isset) atamadan önce orada var olduğunu bilmek gerekiyorsa yararlı kullanımı "kurulmamış" olduğunu, ancak bu sadece "kurulmamış" bir adım eklemek.

örneğin:

if ($array[$index]=="a")
   unset($array[$index]);

...

if (!isset($array[$index]))
   $array[$index] = $element;