Comment pouvez-vous supprimer une valeur qui a une clé vide d'un tableau associatif en PHP?

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

  •  04-07-2019
  •  | 
  •  

Question

J'ai une clé qui semble être une chaîne vide, mais l'utilisation de unset ($ array ["]]); ne supprime pas la paire clé / valeur. Je ne vois pas d'autre fonction qui fasse ce que je veux, alors je suppose que c'est plus compliqué que d'appeler une fonction.

La ligne de l'élément sur un print_r est [] = > 1 , ce qui m'indique que la clé est la chaîne vide.

En utilisant var_export, l'élément est répertorié sous la forme '' = > 1 .

À l'aide de var_dump, l'élément est répertorié sous la forme ["]] = > int (1) .

Jusqu'à présent, j'ai essayé toutes les méthodes de suppression suggérées, mais aucune n'a supprimé l'élément. J'ai essayé unset ($ array [" "]); , unset ($ array ['']]); et unset ($ array [ null]); sans chance.

Était-ce utile?

La solution

Essayez unset ($ array [null]);

Si cela ne fonctionne pas, imprimez le tableau avec var_export ou var_dump au lieu de print_r , car cela vous permet de voir le type de la clé. Utilisez var_export pour afficher les données dans la syntaxe PHP.

var_export ($ array);

Notez que var_export ne fonctionne pas avec les structures récursives.

Autres conseils

Essayé:

$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/>';

Vous avez:

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

Vous devriez également analyser l'origine de la clé ...

Je suppose que ce n'est pas une chaîne vide. Essayez ce qui suit pour voir ce que vous obtenez:

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

Essayez d’utiliser var_dump au lieu de print_r . Cela peut vous donner une meilleure idée de la nature exacte de la clé.

Je ne sais pas quoi vous dire. Exécuter ce script

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

Je reçois le résultat suivant

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

Découvrez comment le " null " la clé du tableau a été convertie en une chaîne vide?

Êtes-vous sûr de ne pas utiliser une copie du tableau? Si vous avez fait cet appel à unset () depuis une fonction, il est possible que vous l'êtes.

Ceci a été testé sur PHP 5.2.0

Indiquez le code que vous utilisez pour supprimer l'élément, ainsi que le code de votre vérificateur avant et après cette ligne.

Ce que je recherche, c'est à peu près ceci:

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

Veuillez également publier la sortie complète des deux lignes var_export .

Je cherche quelque chose comme ça:

array (
  '' => 1,
)
array (
)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top