2009-03-31 11 views
1

Ich habe eine Variable $params, die Daten aus der Datenbank bekommt:Assign Wert von einem assoziativen Array von PHP in ein anderen Array

$params = mssql_fetch_array($result) 

Soweit ich weiß, es assoziatives Array ist. Ich möchte ein anderes Array $tempParams, um den Wert dieses Arrays zu halten. Kann ich zuweisen es durch die folgende Anweisung:

$tempParams = $params 

Außerdem brauche ich eine einzige Aussage Wert auf $ tempParams zu deklarieren und zuweisen, oder können diese getrennt werden?

Eine weitere Frage, die ich gerne stellen möchte, ist, dass die folgende Aussage korrekt ist; Während $ tempParams Werte enthält;

$params['column1'] = $tempParams['newColumns'] 

Antwort

5

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' 
+0

Vielen Dank Mann, Ihre Antwort ist für mich gearbeitet. Ich habe auch nicht den Comiler PHP. Aber folge einfach der Antwort und korrigiere die Logik ... –

0

Ja, das kann, aber das könnte Aliasing verursachen, wenn Sie mit Objekten arbeiten (je nachdem, welche PHP-Version Sie verwenden).

Warum möchten Sie das Array kopieren? Können Sie nicht mit der gleichen ursprünglichen Variable ($ params) arbeiten?

+0

Ich möchte einige Spalten aus der Datenbank ignorieren, weil jemand neue Spalten hinzugefügt hat. Während ich alte Werte der Tabelle, nur für den Fall, wenn Benutzer Zugriff auf alle alten Datensatz .. –

1

Soweit, ob Ihr Array assoziativ ist, auf die Dokumentation lesen mysql_fetch_array()

Soweit Zuordnung geht, man kann es eigentlich diese einfache

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

in einer Erklärung setzen test zeigt, dass bei einer solchen Zuweisung beide Variablen separate Kopien und keine Referenzen sind.

+0

Bis Sie '$ b [1]' zuweisen, sind '$ a' und' $ b' in Ihrem Beispiel keine separaten Kopien. – grantwparks

1

Ja, der Operator = kopiert das Array genau.

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 Sie sagen wollen, dass $ tempParams ist ein Array irgendwo vor zuordnen, können Sie es wie folgt tun :

$tempParams = array(); 

Dies wird $ tempParams zu einem Array ohne Elemente innerhalb machen.

+1

folgende Aussage ist wirklich hilfreich für mich. $ tempParams = array(); –

1

Für Arrays, numerisch und assoziativ, erstellt der Operator = eine Kopie der Variablen. Und beide Variablen sind völlig unabhängig voneinander. Wenn Sie jedoch mit Objekten arbeiten, erstellt der Operator = einen Verweis auf das Objekt, und beide Variablen verweisen auf genau das gleiche Objekt.

+0

danke Kumpel. mein Problem hat sich jetzt gelöst ... –

+0

Arrays werden bei der Zuordnung nicht nach meinen Recherchen kopiert, bis die eine oder andere Variable aktualisiert ist. Es heißt "Kopieren beim Schreiben". – grantwparks