Frage

Ich habe eine Variable $params, die Daten aus der Datenbank erhält:

$params = mssql_fetch_array($result)

Soweit ich weiß, ist es assoziatives Array. Ich möchte ein anderes Array $tempParams den Wert dieses Arrays zu halten. Kann ich es mithilfe der folgenden Aussage zu:

$tempParams = $params

Darüber hinaus habe ich eine einzige Aussage benötigen einen Wert $ tempParams zu deklarieren und zuweisen, oder können diese getrennt werden?

Eine Frage möchte ich fragen möchte, ist, dass folgende Anweisung korrekt ist; Während $ tempParams enthält Werte;

$params['column1'] = $tempParams['newColumns']
War es hilfreich?

Lösung

Ja,

$tempParams = $params; 

Werden alle Werte von $ params auf $ tempParams kopieren.

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

Andere Tipps

Soweit, ob Ihr Array ist assoziativ, lesen Sie in der Dokumentation zu mysql_fetch_array ()

Was die Zuordnung geht, man kann es tatsächlich in einer Anweisung put

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

Dieser einfache Test zeigt, dass, wenn Sie einen Auftrag wie dies zu tun, beide Variablen separate Kopien sind und keine Referenzen.

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

$b[1] = 'x';

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

Ja, der Operator = wird genau das Array kopiert werden.

Sie können selbst überprüfen:

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

Es gibt nicht so etwas wie Variablen in PHP „deklarieren“, aber wenn man möchte sagen, dass $ tempParams ist ein Array irgendwo vor zuordnen, können Sie es wie folgt tun:

$tempParams = array ();

Das Innere ohne Elemente $ tempParams ein Array machen wird.

Für Arrays, numerischen und assoziativ, wird der Operator = eine Kopie der Variablen machen. Und beiden Variablen sind völlig unabhängig voneinander. Wenn jedoch Umgang mit Objekten, der Operator = eine Referenz auf das Objekt erstellt, und beide Variablen verweisen auf das exakt gleiche Objekt.

Ja, Sie können, aber das könnte eine Art von Aliasing verursachen, wenn Sie mit Objekten zu tun hat (je nachdem, welche PHP-Version Sie verwenden).

Warum ist es, dass Sie das Array kopieren? Sie können nicht mit der gleichen ursprünglichen Variablen arbeiten ($ params)?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top