Attribuer une valeur d'un tableau associatif de php dans un autre tableau
-
22-08-2019 - |
Question
J'ai un $params
variable qui reçoit les données de la base de données:
$params = mssql_fetch_array($result)
Pour autant que je sache, il est un tableau associatif. Je veux un autre $tempParams
tableau pour maintenir la valeur de ce tableau. Puis-je assigner en utilisant l'instruction suivante:
$tempParams = $params
De plus, ai-je besoin déclaration unique de déclarer et d'attribuer une valeur à $ tempParams, ou peuvent-ils être séparés?
Une autre question que je voudrais poser est cette déclaration suivante est correcte; Alors que $ tempParams contient des valeurs;
$params['column1'] = $tempParams['newColumns']
La solution
Oui,
$tempParams = $params;
copiera toutes les valeurs de $ params à tempParams $.
$params['foo'] = 'bar';
echo $tempParams['foo']; //nothing
$tempParams = $params;
echo $tempParams['foo']; //'bar'
$params['foo'] = 'hai';
echo $tempParams['foo']; //still: 'bar'
Autres conseils
En ce qui concerne si votre tableau est associative, lisez la documentation sur mysql_fetch_array ()
En ce qui concerne l'affectation va, vous pouvez réellement le mettre dans une instruction
$tempParams = $params = mysql_fetch_array( $result, MYSQL_ASSOC );
Ce test simple montre que lorsque vous faites une mission comme celui-ci, les deux variables sont des copies séparées et non pas des références.
$a = $b = array( 1, 2, 3 );
$b[1] = 'x';
echo '<pre>';
print_r( $a );
print_r( $b );
echo '</pre>';
Oui, l'opérateur = copie du tableau exactement.
Vous pouvez vérifier vous-même:
// get the $params from DB
print_r ($params); // will output array contents
$tempParams = $params;
print_r ($tempParams); // must be the same as above
Il n'y a pas une telle chose comme « déclarant » les variables en PHP, mais si vous voulez dire que $ tempParams est un tableau quelque part avant d'attribuer, vous pouvez le faire comme ceci:
$tempParams = array ();
Cela fera $ tempParams un tableau sans éléments à l'intérieur.
Pour les tableaux, numérique et associative, l'opérateur = fera une copie de la variable. Et les deux variables sont totalement indépendantes les unes des autres. Cependant, lorsqu'ils traitent avec des objets, l'opérateur = crée une référence à l'objet, et les deux variables pointent vers exactement le même objet.
Oui, vous pouvez, mais cela pourrait provoquer une sorte de aliasing si vous avez affaire à des objets (selon la version PHP que vous utilisez).
Pourquoi est-ce que vous voulez copier le tableau? Tu ne peux pas travailler avec la même variable d'origine ($ params)?