|
配列操作に関する関数を集めてみました。
とても便利な関数ばかりです。
|
|
■pushとpop
配列やリストを末尾から操作する関数です。
|
|
@array = ('aaa', 'bbb');
$data = 'ccc';
push(@array, $data);
配列@arrayの末尾の要素に$dataの内容を挿入します。
@arrayは要素数が1つ増え('aaa', 'bbb', 'ccc')となります。
|
|
@array = ('aaa', 'bbb', 'ccc');
$data = pop(@array);
配列@arrayの末尾の要素を取り出し$dataに代入します。
@arrayは要素数が1つ減り('aaa', 'bbb')となります。
$dataには'ccc'が代入されます。
|
|
■shiftとunshift
配列やリストを先頭から操作する関数です。
|
|
@array = ('aaa', 'bbb', 'ccc');
$data = shift(@array);
配列@arrayの先頭の要素を取り出し$dataに代入します。
@arrayは要素数が1つ減り('bbb', 'ccc')となります。
$dataには'aaa'が代入されます。
|
|
@array = ('aaa', 'bbb');
$data = 'ccc';
unshift(@array, $data);
配列@arrayの先頭の要素に$dataの内容を挿入します。
@arrayは要素数が1つ増え('ccc', 'aaa', 'bbb')となります。
|
|
■splice
配列やリストの操作を全般的に行います。
|
|
|
splice(配列やリスト, オフセット, 取り除く要素数);
|
|
|
オフセットは0が起点です。
splice関数は取り除いたリストを返します。
|
|
@array = ('a', 'b', 'c', 'd');
@out = splice(@array, 0, 2);
@arrayの要素の1番目から2要素を取り除いて@outに代入します。
@arrayは要素が2つ減り('c', 'd')となり、@outは('a', 'b')となります。
|
|
@array = ('a', 'b', 'c');
@ins = ('bbb');
@out = splice(@array, 1, 1, @ins);
第4引数を指定すると取り除いた部分にこれを挿入する事が出来ます。
上記の例では@arrayの2番目の要素を取り除いて@outに代入し、そこに@insを挿入したものが@arrayとなります。
@arrayは('a', 'bbb', 'c')となり、@outは('b')となります。
|
|
splice(@array, 1, 0, @ins);
取り除く要素数に0を指定しています。
@arrayの2番目の要素の前に@insを挿入する事が出来ます。
|
|
■grep
配列やリストの中から条件に合う要素を抜き出して配列やリストを生成する関数です。
|
|
@new = grep(/^S/i, @array);
@arrayの要素の中で「S」又は「s」から始まる要素を抜き出して@newを生成します。
@arrayの要素内容は変化しません。
|
|
@new = grep(!/aaa/, @array);
@arrayの要素の中で「aaa」にマッチしない要素を抜き出して@newを作成します。
@arrayの要素内容は変化しません。
|
|
|
条件に2バイト文字を使用する事は極力避けましょう。
CGIを設置するプラットフォームによっては不具合が起きる可能性があります。
|
|
$tmp = splice(@array, 3, 1);
splice関数は受取り側をスカラー変数とする事も出来ます。
この場合は取り除いた最後の要素を返します。
しかし、このようにsplice関数をスカラーコンテキストで評価させるとCGIを設置するプラットフォームによっては要素が取り除かれず、そのまま残ってしまう場合があるようです。
|
|
□更新履歴
2007.04.22 全体的に内容を見直し
2006.01.27 補足を追加
|
|
|