質問

私は、データベースからデータを取得し、変数$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)で動作しないことができますか?

scroll top