配列要素の削除・置換・連結・分割

PHPのシンタックス

  1. HOME
  2. 配列要素

配列の要素を削除する

$removed = array_splice($myArray,$start,$lengs);
第1引数の配列$myArrayの$startで指定した位置から、$lengsで指定した個数の要素を削除します。$lengsを省略すると初期値の0になり、1個も削除しません。$removedに戻るのは、削除後の配列ではなく、削除した要素の配列です。

インデックス配列から値を削除する

実行後:$myArray
Array ( [0] => a [1] => d [2] => e )
戻り:$removed
Array ( [0] => b [1] => c )
<?php
$myArray = ["a", "b", "c", "d", "e"];
$removed = array_splice($myArray, 1, 2);
echo '実行後:$myArray', "\n <br>";
print_r($myArray);
echo "<br>";
echo '戻り:$removed',"\n <br>";
print_r($removed);
?>

配列の先頭・末尾を取り出す

配列の先頭から値を取り出す
$removed = array_shift($myArray);
配列の末尾から値を取り出す
$removed = array_pop($myArray);

値を取り除くと、値の並びのインデックス番号はリセットされます。

配列の先頭の値を取り出す

実行後:$myArray
Array ( [0] => b [1] => c [2] => d )
戻り:$removed1
a
戻り:$removed2
e
<?php
$myArray = ["a", "b", "c", "d", "e"];
$removed1 = array_shift($myArray);
$removed2 = array_pop($myArray);
echo '実行後:$myArray', "\n <br>";
print_r($myArray);
echo "<br>";
echo '戻り:$removed1',"\n <br>";
print_r($removed1);
echo "<br>";
echo '戻り:$removed2',"\n <br>";
print_r($removed2);
?>

配列の要素を置換・挿入する

$removed = array_splice($myArray,$start,$length=(),$replacement);
置換
array_splice()に第4引数$replacementを指定すると、要素の置換が出来ます。配列の$myArrayの$start位置から$length個を削除し、それを$replacementの配列と置換します。
挿入
$lengthを0にすると1個も削除されず$startの位置に要素を挿入したことになります。

$removedには削除された要素の配列が入ります。

配列の2番目から3個の要素を置換する

置換後:$myArray
Array ( [0] => A [1] => 7 [2] => 8 [3] => 9 [4] => E )
戻り:$removed
Array ( [0] => B [1] => C [2] => D )
<?php
$myArray = ["A","B","C","D","E"];
$replace = ["7","8","9"];
$removed = array_splice($myArray,1,3,$replace);
echo '置換後:$myArray',"\n <br>";
print_r($myArray);
echo "\n <br>";
echo '戻り:$removed',"\n <br>";
print_r($removed);
?>

配列と配列を連結する

+演算子で連結する
配列A + 配列Bのように + 演算子を使って配列を連結すると、配列Bが配列Aよりも要素の個数が多いときに、その多い部分を配列Aに追加した配列Cが作られます。

複数の配列を連結する
$result = array_merge($array1,$array2,$array3,...);
array_mergeで配列を連結していく。重複したキーは後の配列の値が採用される。

array_merge_recursive()で連結する
array_mergeと似ているが、重複するキーがあった場合の連結の仕方に違いがあり、重複キーの値を多重配列にしてすべて残す。

配列を+演算子とarray_merge

+演算子連結
Array ( [0] => A [1] => B [2] => C [3] => G [4] => H [5] => c7 )
array_merge連結
Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F [6] => G [7] => H [8] => c1 [9] => c2 [10] => c4 [11] => c5 [12] => c6 [13] => c7 )
<?php
$a = ["A", "B", "C"];
$b = ["D", "E", "F", "G", "H"];
$c = ["c1", "c2", "c4", "c5", "c6","c7"];
$result = $a + $b + $c;
echo "+演算子連結","\n <br>";
print_r($result);
echo "\n <br>";
echo "array_merge連結","\n <br>";
$result2 =array_merge($a,$b,$c);
print_r($result2);
?>

連想配列を連結

array_merge連結
Array ( [a] => 1 [b] => 200 [c] => 3 [d] => 40 )
array_merge_recursive連結
Array ( [a] => 1 [b] => Array ( [0] => 2 [1] => 200 ) [c] => 3 [d] => 40 )
<?php
$a = ["a"=>1,"b"=>2,"c"=>3];
$b = ["b"=>200,"d"=>40];
$result = array_merge($a,$b);
$result2 = array_merge_recursive($a,$b);
echo "array_merge連結", "\n <br>";
print_r($result);
echo "\n <br>";
echo "array_merge_recursive連結", "\n <br>";
print_r($result2);
?>

2つの配列から連想配列を作る

array_combine(keys,values)を使うと、配列keysをキー、配列valuesを値にした連想配列を作ることが出来ます。

通過地点をキー、スプリットを値にした連想配列にする

Array ( [5km] => 00:30:58 [10km] => 00:55:37 [20km] => 01:48:12 [40km] => 03:38:20 [Goal] => 04:05:08 )
<?php
$point = ["5km","10km","20km","40km","Goal"];
$sprit = ["00:30:58","00:55:37","01:48:12","03:38:20","04:05:08"];
$result = array_combine($point,$sprit);
print_r($result);
?>

配列から重複した値を取り除く

array_unique()を利用すると配列から重複した値を取り除くことが出来ます。

配列を連結して重複を取り除く

Array ( [0] => テント [1] => タープ [2] => 寝袋 [3] => 焚き火台 [4] => 寝袋 [5] => 薪 [6] => テント [7] => 椅子 )
Array ( [0] => テント [1] => タープ [2] => 寝袋 [3] => 焚き火台 [5] => 薪 [7] => 椅子 )
<?php
$a = ["テント","タープ","寝袋"];
$b = ["焚き火台","寝袋","薪"];
$c = ["テント","椅子"];
$all = array_merge($a,$b,$c);
$unique =array_unique($all);
print_r($all);
echo "<br>";
print_r($unique);
?>

配列を切り出す

array_spliceを利用すると、配列を切り出して新しい配列を作ることができます。
配列を切り出す
$slice = array_splice($myArray,$start,$length)
第1引数の$myArray配列の$start位置から$lengthの長さだけ切り出して、$sliceに代入します。$lengthを省略すると$start位置から最後までが切り出される。

配列を切り出す

Array ( [0] => A [1] => B [2] => C )
Array ( [0] => D [1] => E )
Array ( [0] => D [1] => E [2] => F )
<?php
$myArray = ["A", "B", "C", "D", "E","F"];
$slice1 = array_slice($myArray,0,3);
$slice2 = array_slice($myArray,3,2);
$slice3 = array_slice($myArray,-3);
print_r($slice1);
echo "<br>";
print_r($slice2);
echo "<br>";
print_r($slice3);
?>