@blog.justoneplanet.info

日々勉強

JavaScriptとPHPの配列の扱い

そういえば配列における「参照渡し」と「値渡し」の挙動がJavaScriptとPHPで異なっていたので書き留めておくことにする(・∀・)!!

■JavaScript

以下のようにJavaScriptでは、関数に配列を渡すと参照渡しとなる。

var ary = ['a', 'b', 'c'];
var sample = function(ary){
    ary.pop();
}
console.log(ary);// ['a', 'b', 'c']
alert('sample');
sample(ary);
console.log(ary);// ['a', 'b']

ちなみにalertはconsoleが上手く作動しなかったために使用した。

■PHP

以下のようにPHPでは、関数に配列を渡すとPHP4では値渡しとなる。

$ary = array('a', 'b', 'c');
function sample($ary){
    array_pop($ary);
}
var_dump($ary);
sample($ary);
var_dump($ary);

(関数内で配列を変更したい場合、)JavaScriptと同じ挙動をPHPで再現するには以下のように記述する必要がある。

$ary = array('a', 'b', 'c');
function sample(&$ary){
    array_pop($ary);
}
var_dump($ary);
sample($ary);
var_dump($ary);

リソースを節約するには参照渡しを明示したほうがイイね( ^ω^)

2 Comments»

php5以降はデフォルトで参照渡しになっていたような。
変更を加えた場合のみに、コピーの配列が作成される仕様だったように思います。
なので、関数内で配列を変更したい場合に限ってのみ & をつけるのでいいと思います。

そうですね。ちょっと当時の記憶が定かではありませんが修正させていただきます!ありがとうございます!

RSS feed for comments on this post.TrackBack URL

Leave a comment