63 votes

Initialisation simultanée de plusieurs variables PHP

Comment puis-je initialiser plusieurs variables PHP avec une valeur de zéro simultanément ? sans utiliser un tableau ? Je souhaite écrire un code qui soit essentiellement équivalent à ce qui suit :

$first = 0;
$second = 0;
$third = 0;
$fourth = 0;

0 votes

132voto

rid Points 24625
$first = $second = $third = $fourth = 0;

0 votes

Cela ne pose-t-il pas le problème suivant : lorsque vous modifiez le quatrième dollar, vous modifiez également le reste ?

11 votes

Si vous changez $fourth vous ne changerez pas le reste, parce que 0 est une valeur, pas une référence. Si vous aviez fait quelque chose comme $fourth = 0; $third = &$fourth; $second = &$fourth; $first = &$fourth alors toutes les autres variables seraient des références à $fourth (pas la valeur 0 ), et en modifiant $fourth se refléterait également dans les autres variables.

14 votes

Cette affectation multiple fonctionne car, en PHP, l'affectation est une expression qui renvoie la valeur affectée. Ainsi, $fourth = 0 est une expression qui renvoie la valeur 0 . Cette valeur est ensuite affectée à $third et, puisque cette affectation est également une expression, la valeur de retour de l'affectation de 0 a $third est à nouveau la valeur 0 etc.

21voto

Sharon Levy Points 19

Bien qu'il soit possible d'initialiser plusieurs variables en utilisant un opérateur virgule dans une boucle for, comme suit :

<?php
for ($a=0,$b=0,$c=0,$d=0;;) {
    break;
}
var_dump($a,$b,$c,$d);

(Voir la démo ici )

le site liste offre un moyen plus efficace d'effectuer une affectation de variables multiples, comme le montre l'exemple suivant :

<?php

list( $first, $second, $third, $fourth ) = array( 0, 0, 0, 0 );
var_dump($first, $second, $third, $fourth );

Voir la démo ici

On peut souhaiter reconsidérer l'utilisation des tableaux pour obtenir des variables initialisées multiples. Avec PHP7.1+, on peut écrire du code plus simple et plus robuste si on utilise déstructuration des tableaux disponible avec une syntaxe de tableau court, comme suit :

<?php

[$first, $second, $third, $fourth ] = [0, 0, 0, 0];
var_dump($first, $second, $third, $fourth );

Voir la démo ici .

Si l'on a besoin d'être certain que les variables initialisées n'ont pas été précédemment définies, voir ce qui suit discussion en particulier ceci réponse .

1 votes

Vous pouvez utiliser cette méthode pour déclarer plusieurs variables avec des valeurs différentes, ce qui la rend beaucoup plus utile.

0 votes

@Alec C'est un peu confus pour déclarer des variables avec des valeurs différentes.

2voto

Yogi Ghorecha Points 974

Si vous voulez initialiser plusieurs variables de tableau, utilisez alors

# Initialize multiple array variables with Empty values
$array_1 = $array_2 = $array_3 = array();

# Initialize multiple array variables with Some values in it
list( $array_1, $array_2, $array_3) = array('one','two','three');

# Print value of array variables
var_dump($array_1,$array_2,$array_3);

Output:
*******
string 'one' (length=3)
string 'two' (length=3)
string 'three' (length=5)

Si vous voulez initialiser plusieurs variables régulières, utilisez alors

# Initialize multiple regular variables with values
$a = $b = $c = 'Hello PHP';
echo $a.'<br>',$b.'<br>', $c.'<br>';

Output:
*******
Hello PHP
Hello PHP
Hello PHP

0voto

Sharon Levy Points 19

Une autre façon d'utiliser une ligne unique imbriquée dans l'expression d'initialisation du for-loop, bien qu'elle puisse être imbriquée dans n'importe quelle expression du for-loop :

<?php
for ($a=0,$b=0,$c=0,$d=0;;) {
    break;
}
var_dump($a,$b,$c,$d);

Le résultat est :

int(0) int(0) int(0) int(0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X