Wie entfernen Sie einen Wert, der einen leeren Schlüssel aus einem assoziativen Array in PHP hat?

StackOverflow https://stackoverflow.com/questions/243132

  •  04-07-2019
  •  | 
  •  

Frage

Ich habe einen Schlüssel, der eine leere Zeichenkette, jedoch mit unset($array[""]); zu sein scheint nicht entfernen Sie den Schlüssel / Wert-Paar. Ich habe keine andere Funktion sehen, das tut, was ich will, so vermute ich, es komplizierter ist, dass nur eine Funktion aufrufen.

Die Leitung für das Element auf einem print_r ist [] => 1, die mir zeigt, dass der Schlüssel die leere Zeichenkette ist.

Mit var_export wird das Element als '' => 1 aufgeführt.

Mit Var_dump wird das Element als [""]=>int(1) aufgeführt.

Bisher habe ich alle vorgeschlagenen Methoden der Entfernung versucht, aber keines, das Element entfernt hat. Ich habe versucht, unset($array[""]);, unset($array['']); und unset($array[null]); ohne Glück.

War es hilfreich?

Lösung

Versuchen unset($array[null]);

Wenn das nicht funktioniert, drucken Sie das Array über var_export oder var_dump statt print_r, da dies ermöglicht es Ihnen, den Typ des Schlüssels zu sehen. Verwenden Sie var_export die Daten in PHP-Syntax zu sehen.

var_export($array);

Beachten Sie, dass var_export nicht rekursive Strukturen funktioniert.

Andere Tipps

Versuchte:

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

Sie sollten analysieren, wo der Schlüssel kommen, auch ...

Meine Vermutung ist, dass es keine leere Zeichenfolge ist. Versuchen Sie, die folgenden, um zu sehen, was Sie bekommen:

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

Versuchen var_dump statt print_r verwenden. Dies können Sie eine bessere Vorstellung davon, was genau der Schlüssel ist.

Nicht sicher, was Sie sagen. Das Ausführen dieses Skript

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

Ich erhalte die folgende Ausgabe

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

Sehen Sie, wie der "Null" Array Schlüsseltyp auf einen leeren String umgewandelt wurde?

Sind Sie sicher, dass Sie nicht mit einer Kopie des Arrays zu arbeiten? Wenn Sie diesen Anruf tun unscharf zu schalten () aus dem Innern einer Funktion, ist es möglich, dass Sie sind.

Dieses wurde auf PHP getestet 5.2.0

Bitte senden Sie den Code Sie das Element zu entfernen, verwenden auch Ihren checker Code vor und nach dieser Zeile.

Was ich suche ist so etwas wie folgt aus:

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

Bitte beachten Sie auch die komplette Ausgabe beiden var_export Linien stellen.

Ich bin auf der Suche nach so etwas wie folgt aus:

array (
  '' => 1,
)
array (
)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top