アインシュタインの電話番号
2011.01.16
PHPで配列のpush

PHPerな人には当たり前なんだろうけど、配列要素の追加(push)にこういう([]=)シンタックスシュガーがあるとは知らなくて、PHPのマニュアルで関数探して、

<?php
$a = array('hoge');
array_push($a, 'fuga');

って書いてた。「なんて冗長なpushの仕方なんだ!」とか思ってた自分はずかしい。

PHPで書くと

というわけで、PHPでの配列のpushに関しては以下の記法が一般的っぽいかな。結構曖昧な書き方してもちゃんと認識してくれるっぽい。

<?php
$a = array('hoge', 'fuga');
$a[] = 'piyo';
$a[] = 'poyo';
// 最初の代入であれば初期化もやってくれる
$b[] = 1;  // 初期化&代入
$b[] = 2;
$b[] = 3;
// 記述の仕方もかなりアバウト(空白あり・なし)でもおkっぽい
$c[]=1;
$c[]= 2;
$c[] =3;
$c [] = 4;
$c []= 5;

Rubyで書くと

Rubyだと上記のシンタックスシュガーに近いものだとArray#<<になるかな。ただし、PHPと違って最初に変数の初期化が必要。

a = []
a << 'piyo'
a << 'poyo'
p a
b << 1  #=> 初期化してないと NameError
# Rubyも意外とアバウトな書き方しても大丈夫っぽい
c = []
c<< 1
c <<2
c<<3
c < < 4  #=> さすがにこれは駄目だった syntax error
p c
# 連続して書けるみたい
d = []
d << 1 << 2 << 3 << 4
p d
# ふつーのpush
e = []
e.push 1
e.push 2
e.push 3
e.push 4, 'piyo', 'poyo'  #=> pushも連続して書けるみたい
p e

連続して書けるのは知らなかった!


instance method Array#<<