Pregunta

Tengo un $params variable que obtiene datos de la base de datos:

$params = mssql_fetch_array($result)

Por lo que yo sé, es una matriz asociativa. Quiero otra matriz $tempParams para mantener el valor de esta matriz. ¿Puedo asignar mediante el uso de la siguiente declaración:

$tempParams = $params

Además, ¿necesito una sola declaración para declarar y asignar un valor a $ tempParams, o pueden estas separe?

Una pregunta más me gustaría preguntar es que la declaración siguiente es correcta; Mientras $ tempParams contiene valores;

$params['column1'] = $tempParams['newColumns']
¿Fue útil?

Solución

Sí,

$tempParams = $params; 

copiará todos los valores de $ params a $ tempParams.

$params['foo'] = 'bar';
echo $tempParams['foo']; //nothing
$tempParams = $params;
echo $tempParams['foo']; //'bar'
$params['foo'] = 'hai';
echo $tempParams['foo']; //still: 'bar' 

Otros consejos

En cuanto a si o no su matriz es asociativa, lea la documentación sobre mysql_fetch_array ()

En lo que va de asignación, en realidad se puede poner en una declaración

$tempParams = $params = mysql_fetch_array( $result, MYSQL_ASSOC );

Esta sencilla prueba muestra que cuando se hace una asignación de este tipo, ambas variables son copias separadas y no referencias.

$a = $b = array( 1, 2, 3 );

$b[1] = 'x';

echo '<pre>';
print_r( $a );
print_r( $b );
echo '</pre>';

Sí, el operador = copiará exactamente la matriz.

Puede comprobar usted mismo:

// get the $params from DB
print_r ($params); // will output array contents
$tempParams = $params;
print_r ($tempParams); // must be the same as above

No hay tal cosa como “declarar” las variables en PHP, pero si lo desea para decir que $ tempParams es una matriz en algún lugar antes de asignar, puede hacerlo de esta manera:

$tempParams = array ();

Esto hará que $ tempParams una matriz con ningún elemento en su interior.

Para las matrices, numérico y asociativo, el operador = hará una copia de la variable. Y ambas variables son completamente independientes entre sí. Sin embargo, cuando se trata de objetos, el operador = crea una referencia al objeto, y las dos variables de punto al mismo objeto exacto.

Sí se puede, pero que podría causar algún tipo de aliasing si usted está tratando con objetos (dependiendo de la versión de PHP que está utilizando).

¿Por qué es lo que desea copiar la matriz? ¿No puedes trabajar con la misma variable original ($ params)?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top