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']
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top