Başka bir diziye php bir birleştirici dizi değeri atama

5 Cevap php

Ben veritabanından veri alır $params bir değişken var:

$params = mssql_fetch_array($result)

Bildiğim kadarıyla, bu ilişkisel dizidir. Ben başka bir dizi $tempParams bu dizinin değerini tutmak istiyorum. Ben aşağıdaki deyimi kullanarak atayabilirsiniz:

$tempParams = $params

Buna ek olarak, ben $ tempParams bir değer beyan ve atamak için tek bir deyimi gerekiyor, yoksa bu ayrılabilir?

One more question I would like to ask is that following statement is correct; While $tempParams contains values;

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

5 Cevap

Evet,

$tempParams = $params;

$ Params dolar tempParams tüm değerleri kopyalamak olacaktır.

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

Bildiğim kadarıyla dizi çağrışımlı olup olmadığı gibi, mysql_fetch_array() üzerindeki belgeleri okuyun

Bildiğim kadarıyla atama gider gibi, aslında bir açıklamada koyabilirsiniz

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

Bu basit test böyle bir atama yaptığınızda, her iki değişken ayrı bir kopya değil, referanslar olduğunu göstermektedir.

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

$b[1] = 'x';

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

Evet = operatör tam dizi kopyalar.

Siz kendinizi kontrol edebilirsiniz:

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

Orada PHP "ilan" değişkenleri gibi bir şey, ama $ tempParams yerde atamadan önce bir dizi olduğunu söylemek istiyorsanız, bunu şöyle yapabilirsiniz:

$tempParams = array ();

Bu $ tempParams içinde hiçbir unsurları ile bir dizi yapacak.

Diziler için, sayısal ve ilişkisel, = operatörü değişkenin bir kopyasını yapacaktır. Ve her ikisi de değişken birbirinden tamamen bağımsızdır. Nesneler ile uğraşırken Ancak, = operatör nesnesine bir başvuru oluşturur ve her iki değişken aynı nesneye işaret.

Evet yapabilirsiniz, ancak (kullanmakta olduğunuz PHP sürümüne bağlı olarak) Nesneleri ile uğraşıyoruz eğer aliasing çeşit neden olabilir.

Neden bu diziyi kopyalamak istediğiniz nedir? Eğer aynı orijinal değişkene ($ params) ile çalışmak değil mi?