Je travaille avec une boucle PHP, et j'avais une question concernant la manière dont la désactivation affecte les clés de tableau. Ce tableau utilise les clés numériques standard attribuées par PHP, 0, 1, 2, 3 etc...
. Chaque fois que unset()
s'exécute sur une valeur de tableau, les clés de tableau sont-elles mélangées ou sont-elles conservées comme auparavant?
Merci pour votre temps.
Les clés ne sont ni mélangées ni renumérotées. La touche unset()
est simplement supprimée et les autres restent.
$a = array(1,2,3,4,5);
unset($a[2]);
print_r($a);
Array
(
[0] => 1
[1] => 2
[3] => 4
[4] => 5
)
Testez-le vous-même, mais voici le résultat.
php -r '$a=array("a","b","c"); print_r($a); unset($a[1]); print_r($a);'
Array
(
[0] => a
[1] => b
[2] => c
)
Array
(
[0] => a
[2] => c
)
Ils sont comme ils étaient. Cette clé est JUSTE SUPPRIMÉE
La clé disparaît, qu'elle soit numérique ou non. Essayez le script de test ci-dessous.
<?php
$t = array( 'a', 'b', 'c', 'd' );
foreach($t as $k => $v)
echo($k . ": " . $v . "<br/>");
// Output: 0: a, 1: b, 2: c, 3: d
unset($t[1]);
foreach($t as $k => $v)
echo($k . ": " . $v . "<br/>");
// Output: 0: a, 2: c, 3: d
?>
Cela peut paraître un peu hors contexte, mais en supprimant les valeurs d'un tableau global, appliquez la réponse de Michael Berkowski ci-dessus mais utilisée avec $GLOBALS
à la place de la valeur globale que vous avez déclarée avec global $variable_name
. Donc ce sera quelque chose comme:
unset($GLOBALS['variable_name']['array_key']);
Au lieu de:
global $variable_name; unset($variable_name['array_key']);
NB: Cela ne fonctionne que si vous utilisez des variables globales.
Les clés sont maintenues avec la clé supprimée manquante, mais elles peuvent être réorganisées en procédant comme suit:
$array = array(1,2,3,4,5);
unset($array[2]);
$arranged = array_values($array);
print_r($arranged);
Les sorties:
Array
(
[0] => 1
[1] => 2
[2] => 4
[3] => 5
)
Notez que si nous faisons les choses suivantes sans réorganiser:
unset($array[2]);
$array[]=3;
L'index de la valeur 3 sera 5 car il sera poussé à la fin du tableau et ne tentera pas de vérifier ou de remplacer l'index manquant. Ceci est important à retenir lors de l’utilisation de FOR LOOP avec accès à l’index.