問. 配列を+(プラス)演算子で加算すると?
さて問題です。次のようなPHPスクリプトがあります。
$fruitの値は次のA~Cのどれになるでしょうか?
では、早速試してみましょう!
というわけで、正解は「A」です!
如何だったでしょうか。皆さんの思っていた通りの結果になりましたでしょうか?
ちなみに、私はてっきり「B」になるものと思ってました……。なお、
であれば「B」になります。
ググってみたら、以前のPHPプロ!のTIPSでも「配列の + (プラス) 演算子」として取り上げられてますね...orz
個人的にはあまり直感的な動きではないように思えるので、他の言語ではどうなんだろうと、ちょっと試してみました。
Python
Ruby
んー、PHPだけ違いますね。
なぜPHPではこういった実装になっているのかはわからないのですが、array_merge()よりも+演算子の動作のほうが便利な場合もありますので、動作の違いをきちんと把握して使いこなしたいところですね。
このように言語によって実装が異なりますので、配列の結合を「+」演算子で行う際はみなさんもご注意くださいませ。
- $fruit1
= array('apple', 'banana', 'cherry'); - $fruit2
= array('kiwi', 'lemon', 'melon'); - $fruit
= $fruit1 + $fruit2;
$fruitの値は次のA~Cのどれになるでしょうか?
- A.
array('apple', 'banana', 'cherry') - B.
array('apple', 'banana', 'cherry', 'kiwi', 'lemon', 'melon') - C.
array('kiwi', 'lemon', 'melon')
では、早速試してみましょう!
- $fruit1
= array('apple', 'banana', 'cherry'); - $fruit2
= array('kiwi', 'lemon', 'melon'); - print_r($fruit1
+ $fruit2);
- Array
- (
[0] => apple [1] => banana [2] => cherry - )
というわけで、正解は「A」です!
如何だったでしょうか。皆さんの思っていた通りの結果になりましたでしょうか?
ちなみに、私はてっきり「B」になるものと思ってました……。なお、
- $fruit
= array_merge($fruit1, $fruit2);
であれば「B」になります。
ググってみたら、以前のPHPプロ!のTIPSでも「配列の + (プラス) 演算子」として取り上げられてますね...orz
個人的にはあまり直感的な動きではないように思えるので、他の言語ではどうなんだろうと、ちょっと試してみました。
Python
- fruit1
= ['apple', 'banana', 'cherry'] - fruit2
= ['kiwi', 'lemon', 'melon'] - print
fruit1 + fruit2
- ['apple',
'banana', 'cherry', 'kiwi', 'lemon', 'melon']
Ruby
- fruit1
= ["apple", "banana", "cherry"] - fruit2
= ["kiwi", "lemon", "melon"] - p
fruit1 + fruit2
- ["apple",
"banana", "cherry", "kiwi", "lemon", "melon"]
んー、PHPだけ違いますね。
なぜPHPではこういった実装になっているのかはわからないのですが、array_merge()よりも+演算子の動作のほうが便利な場合もありますので、動作の違いをきちんと把握して使いこなしたいところですね。
このように言語によって実装が異なりますので、配列の結合を「+」演算子で行う際はみなさんもご注意くださいませ。
トラックバック
-
- [PHP]問. 連想配列を+(プラス)演算子で加算すると? from Do You PHP はてな
- via. 問. 配列を+(プラス)演算子で加算すると? : アシアルブログ $ cat arra...
2008年06月23日 17:38
-
- [PHP] 配列の+(プラス)演算子は便利 from 文系大学的IT系の悲哀
- 久しぶりにPHPの話題。 確かにPHPの配列の加算演算子はとても醜い仕様...
2008年06月24日 01:34
-
- PHPの配列結合演算子+(プラス)について考えてみた from 泥のように
- 配列結合演算子は「連想配列の継承」なのだという悟りが啓けたのでま...
2009年07月21日 01:36
最近の記事
- 「Felica交換日記」 最優秀賞受賞!@Felica&AIR/Flashアプリケーションコンテスト [2010年03月18日 : 小林有佳]
- 【Flex3】「Flex3の、こんなときどうするの??」 [2010年03月18日 : 橋本章史]
- DoctrineのMaster&Slaveのコネクションを操作するクラスを作成する方法 [2010年03月15日 : 笹亀弘]
- <Symfony Componentsシリーズ(2)> Symfony 2の秘密兵器: Request Handler [2010年03月11日 : 小川雄大]
- <Symfony Componentsシリーズ(1)> オブジェクトをつなぐEvent Dispatcher [2010年03月11日 : 小川雄大]
- Symfony 2のアプリケーション構成を読む [2010年03月04日 : 小川雄大]
- サーバサイドJavaScriptの「node.js」を試してみました [2010年03月03日 : 中川善樹]
- お初の山梨旅行 [2010年02月26日 : 阿部恵]
- OpenVPNで拠点間VPN [2010年02月25日 : 門脇優児]
- OracleでのLIMITの記述あれこれ [2010年02月24日 : 松田惇]



最近のコメント