Domanda

Ho un $params variabile che ottiene i dati dal database:

$params = mssql_fetch_array($result)

Per quanto ne so, è array associativo. Voglio un'altra $tempParams array per contenere il valore di questo array. Posso assegnare utilizzando la seguente dichiarazione:

$tempParams = $params

Inoltre, ho bisogno di una singola istruzione di dichiarare e assegnare un valore a $ tempParams, o possono queste essere separato?

Ancora una domanda che vorrei chiedere è che la seguente affermazione è corretta; Mentre $ tempParams contiene valori;

$params['column1'] = $tempParams['newColumns']
È stato utile?

Soluzione

Si,

$tempParams = $params; 

copierà tutti i valori da $ params a $ tempParams.

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

Altri suggerimenti

Per quanto riguarda se l'array è associativo, leggere la documentazione sul mysql_fetch_array ()

Per quanto riguarda l'assegnazione va, in realtà si può mettere in una dichiarazione

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

Questo semplice test dimostra che quando si fa un incarico del genere, entrambe le variabili sono copie separate e non riferimenti.

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

$b[1] = 'x';

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

Sì, l'operatore = copierà la matrice esattamente.

È possibile verificare voi stessi:

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

Non esiste una cosa come “dichiarando” le variabili in PHP, ma se si vuole dire che $ tempParams è un array da qualche parte prima di assegnare, si può fare in questo modo:

$tempParams = array ();

Questo renderà $ tempParams un array senza elementi al suo interno.

Per gli array, numerico e associativo, l'operatore = farà una copia della variabile. E entrambe le variabili sono completamente indipendenti l'uno dall'altro. Tuttavia, quando si tratta di oggetti, l'operatore = crea un riferimento all'oggetto, e entrambe le variabili puntare al esattamente lo stesso oggetto.

Sì, è possibile, ma che potrebbe provocare un qualche tipo di aliasing se hai a che fare con gli oggetti (a seconda di quale versione di PHP che si sta utilizzando).

Perché è che si desidera copiare la matrice? Non puoi lavorare con la stessa variabile originale ($ params)?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top