Nasıl PHP bir ilişkisel dizi boş bir anahtara sahip bir değer kaldırırım?

6 Cevap php

Ancak unset($array[""]); anahtar / değer çifti kaldırmaz kullanarak, boş bir dize gibi görünen bir anahtar var. Ben ne istediğiniz başka bir işlevi görmüyorum, bu yüzden sadece bir işlev çağırarak daha karmaşık tahmin ediyorum.

Bir print_r üzerinde elemanı için hat anahtarı boş dizge olduğunu bana gösterir, [] => 1 olduğunu.

Var_export kullanarak, element '' => 1 olarak listelenir.

Var_dump kullanarak, element [""]=>int(1) olarak listelenir.

Şimdiye kadar, ben kaldırma önerilen yöntemlerden tüm denedi, ama hiçbiri unsuru kaldırdık. I unset($array[""]);, unset($array['']); denedim, ve unset($array[null]); hayır şans ile.

6 Cevap

Try unset($array[null]);

Bu işe yaramazsa bu anahtar türünü görmek için izin beri, var_export veya var_dump yerine print_r aracılığıyla dizi yazdırın. var_export PHP sözdizimi verileri görmek için kullanın.

var_export($array);

Bu var_export özyinelemeli yapıları ile çalışmaz unutmayın.

Benim tahminim bu boş bir dize değil olmasıdır. Ne olsun görmek için aşağıdaki deneyin:

foreach ($array as $index => $value) {
    echo $index;
    echo ' is ';
    echo gettype($index);
    echo "\n";
}

Çalıştı:

$someList = Array('A' => 'Foo', 'B' => 'Bar', '' => 'Bah');
print_r($someList);
echo '<br/>';
unset($someList['A']);
print_r($someList);
echo '<br/>';
unset($someList['']);
print_r($someList);
echo '<br/>';

Got:

Array ( [A] => Foo [B] => Bar [] => Bah )
Array ( [B] => Bar [] => Bah )
Array ( [B] => Bar )

Anahtar nereden geldiğini de analiz etmelidir ...

var_dump yerine print_r kullanmayı deneyin. Bu size anahtar tam olarak ne daha iyi bir fikir verebilir.

Değil size ne emin. Bu komut dosyasını Koşu

<?php

$arr = array(
    	false 	=> 1
    ,	true	=> 2
    ,	null	=> 3
    ,	'test'	=> 4
//  ,	''		=> 5
);

print_r( $arr );

foreach ( $arr as $key => $value )
{
    var_dump( $key );
}

unset( $arr[''] );

print_r( $arr );

Ben aşağıdaki çıktıyı almak

Array
(
    [0] => 1
    [1] => 2
    [] => 3
    [test] => 4
)
int(0)
int(1)
string(0) ""
string(4) "test"
Array
(
    [0] => 1
    [1] => 2
    [test] => 4
)

"Null" dizi anahtarı türü boş bir dizeye dönüştürülür nasıl?

Eğer dizinin bir kopyası ile çalışan olmadığından emin misin? Bir fonksiyon içerisinde gelen unset bu çağrıyı () olsaydı, bu olması mümkündür.

Bu PHP 5.2.0 üzerinde test edildi

Eğer bu satırın öncesi ve sonrası de sizin denetleyicisi kod eleman çıkarmak için kullandığınız kod gönderin.

Ne arıyorum bu gibi bir şeydir:

var_export($array);
echo "\n";
unset($array[""]);
var_export($array);

Ayrıca her iki var_export hatlarının tam çıkışını gönderin.

Böyle bir şey için arıyorum:

array (
  '' => 1,
)
array (
)