このための関数はarray_splice
ですが、キーを保持しないため、手動でいくつかの作業を行う必要があります。それをやらせましょう:
function search_and_insert($input, $afterKey, $newItems) {
$keys = array_keys($input);
$insertPosition = array_search($afterKey, $keys);
if ($insertPosition === false) {
return false;
}
++$insertPosition;
$newKeys = array_keys($newItems);
array_splice($keys, $insertPosition, 0, $newKeys);
array_splice($input, $insertPosition, 0, $newItems);
return array_combine($keys, $input);
}
ここでの考え方は、キーと値を別々に処理し、配列ごとに1回スプライシングし、その後、を使用array_combine
して最終結果を取得することです。もう1つの良いアイデアはarray_splice_assoc
、同じ手法を使用して再利用可能な関数を作成し、この特定のジョブのみを実行するのではなく、それを使用することです。
使用法:
$myarray = array("a"=>"News", "b"=>"Articles", "c"=>"images");
$newItems = array("j"=>"Latest News", "k"=>"Sports News", "l"=>"Entertainment");
$insertAfter = "a";
print_r(search_and_insert($myarray, "a", $newItems));
実際の動作をご覧ください。