PHPには配列を操作するarray_spliceという関数があります。
よく分からないのでまとめてみました。
基本
イメージとしては「元の配列の一部分を削除する。戻り値は削除した部分の配列」です。
「カットして、カットした部分を返す」と言ってもいいかもしれません。
さらに「カットした部分に別の配列を当てはめる」こともできます。
長さを省略
長さを省略すると指定した位置から最後までが削除されます。
$moto=array(0,1,2,3,4,5);
$saki=array_splice($moto,2);
print_r($moto);//$moto=array(0,1)
print_r($saki);//$saki=array(2,3,4,5)
$saki=array_splice($moto,2);
print_r($moto);//$moto=array(0,1)
print_r($saki);//$saki=array(2,3,4,5)
長さを指定
長さを指定すると指定した位置から長さ(個数)分が削除されます。
$moto=array(0,1,2,3,4,5);
$saki=array_splice($moto,2,3);
print_r($moto);//$moto=array(0,1,5)
print_r($saki);//$saki=array(2,3,4)
$saki=array_splice($moto,2,3);
print_r($moto);//$moto=array(0,1,5)
print_r($saki);//$saki=array(2,3,4)
別の配列を指定
別の配列を指定すると削除された部分にその配列が挿入されます。
$moto=array(0,1,2,3,4,5);
$betsu=array(10,11,12);
$saki=array_splice($moto,2,3,$betsu);
print_r($moto);//$moto=array(0,1,10,11,12,5)
print_r($saki);//$saki=array(2,3,4)
$betsu=array(10,11,12);
$saki=array_splice($moto,2,3,$betsu);
print_r($moto);//$moto=array(0,1,10,11,12,5)
print_r($saki);//$saki=array(2,3,4)
元の配列に別の配列を追加
JavaScriptにはconcatという配列の後に別の配列を追加するメソッドがあります。
PHPにはこれがありませんが同じことをarray_spliceで実現できます。
「最初の位置」として元の配列の長さを指定すると元の配列の後から削除されることになりますが「長さ」として0を指定すると何も削除されません。このとき「別の配列」を指定すると、元の配列の後に置かれるので、結果として、元の配列の後に別の配列を追加したことになります。
コメント