別の配列にPHPの連想配列から値を割り当てます
-
22-08-2019 - |
質問
私は、データベースからデータを取得し、変数$params
があります:
$params = mssql_fetch_array($result)
私の知る限りでは、それは連想配列です。私は別の配列は、この配列の値を保持するために$tempParams
たいです。私は、次のステートメントを使用して割り当てることができます:
$tempParams = $params
また、私はtempParamsを宣言し、$に値を代入するために1つの文を必要とする、またはこれらを分離することができますか?
私がお願いしたいもう一つの問題は、ステートメントを以下は正しいことです。 $ tempParamsは値が含まれていますが、
$params['column1'] = $tempParams['newColumns']
解決
はい、
$tempParams = $params;
tempParams $に$からのparamsをすべての値をコピーします。
$params['foo'] = 'bar';
echo $tempParams['foo']; //nothing
$tempParams = $params;
echo $tempParams['foo']; //'bar'
$params['foo'] = 'hai';
echo $tempParams['foo']; //still: 'bar'
他のヒント
はい、=オペレータが正確に配列をコピーします。
あなたは自分でチェックすることができます:
// get the $params from DB
print_r ($params); // will output array contents
$tempParams = $params;
print_r ($tempParams); // must be the same as above
PHPで「宣言」の変数のようなものはありませんが、あなたは$ tempParamsを割り当てる前にどこかの配列であると言うことを望むならば、あなたはこのようにそれを行うことができます:
$tempParams = array ();
この内部要素を持たない$ tempParams配列を行います。
の数値と連想配列については、=演算子は、変数のコピーを作成します。そして、両方の変数は互いに完全に独立しています。オブジェクトを扱う場合しかし、=演算子は、オブジェクトへの参照を作成し、両方の変数がまったく同じオブジェクトを指します。
はいすることができますが、それはあなたが(あなたが使用しているPHPのバージョンかに応じて)オブジェクトを扱っている場合エイリアシングのいくつかの種類を引き起こす可能性があります。
なぜそれはあなたが、配列をコピーしたいということでしょうか?あなたは、同じ元の変数($のparams)で動作しないことができますか?