Pergunta

Eu tenho um $params variável que obtém dados do banco de dados:

$params = mssql_fetch_array($result)

Tanto quanto eu sei, é matriz associativa. Quero outra $tempParams matriz para armazenar o valor dessa matriz. Posso atribuir-lo usando a seguinte declaração:

$tempParams = $params

Além disso, eu preciso uma única instrução para declarar e atribuir um valor a $ tempParams, ou estes podem ser separados?

Mais uma pergunta que eu gostaria de pedir é que seguinte declaração está correta; Enquanto $ tempParams contém valores;

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

Solução

Sim,

$tempParams = $params; 

irá copiar todos os valores de $ params para US $ tempParams.

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

Outras dicas

Tanto quanto se ou não sua matriz é associativa, leia a documentação on mysql_fetch_array ()

Quanto atribuição vai, você realmente pode colocá-lo em uma instrução

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

Esta simples teste revela que quando você faz um trabalho assim, ambas as variáveis ??são cópias separadas e não referências.

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

$b[1] = 'x';

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

Sim, o operador = irá copiar a matriz exatamente.

Você pode verificar-se:

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

Não há tal coisa como “declarar” variáveis ??em PHP, mas se você gostaria de dizer que US $ tempParams é um lugar matriz antes da atribuição, você pode fazê-lo como este:

$tempParams = array ();

Isso fará $ tempParams um array sem elementos dentro.

Para matrizes, numéricas e associativos, o operador = fará uma cópia da variável. E ambas as variáveis ??são completamente independentes um do outro. No entanto, quando se lida com objetos, o operador = cria uma referência ao objeto, e ambas as variáveis ??apontam para exatamente o mesmo objeto.

Sim, pode, mas isso poderia causar algum tipo de aliasing Se você está lidando com objetos (dependendo de qual versão do PHP você está usando).

Por que é que você quer copiar a matriz? você não pode trabalhar com a mesma variável original ($ params)?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top