今日はarray_merge()関数がバグっていたので再調査しました。
定義: array_merge — 1つ以上の配列をマージします
仕様: array array_merge(array $array1
[, $array1
[, array $...
array $...
])
説明:
1. 1 つ以上の配列のセルを結合し、1 つの配列内の値を前の配列の末尾に追加します。
2. 入力配列に同じ文字列キー名がある場合、キー名の後の値が前の値を上書きします。ただし、配列に数値キー名が含まれている場合、後続の値は元の値を上書きせず、元の値に追加されます。
3. 配列のみが指定され、その配列が数値的にインデックス付けされている場合、キー名は継続的に再インデックス付けされます。
この機能はマニュアルに詳細な例が記載されており、非常に多用途で実用的です。
今日私が遭遇した問題は、マニュアルに警告があったのに、これまで気付かず、致命的なエラーが発生したということでした。以下の通り:
PHP >= バージョン 5.0、array_merge() は array 型のパラメータのみを受け入れます。ただし、キャストを使用して他の型を組み合わせることができます。
foreach やその他のコードによって生成される配列変数に注意してください。変数を空の配列に初期化するか、マージ中に強制変換を実行してください。そうでないと、あなたはとても苦しむことになるでしょう。したがって、変数を初期化する習慣を維持することもお勧めします。
1. 2 つの配列が同じ文字列キー名を持つ場合:
$book1 = array(linux=>linux サーバーの構成と管理,php=>PHP プログラミング); array(linux=>サーバーの構成と管理,jsp=>PHP);
$result = array_merge($book1,$book2);
print_r($result);
?>
出力は次のとおりです:
Array ( [linux] => サーバーの構成と管理 [php] => PHP プログラミング [jsp] => PHP)
手順、後者は前者を置き換えます。
2. 2 つの配列が同じ数値キー名を持つ場合:
$book1 = array (Linux サーバーの構成と管理、PHP プログラミング);
$book2 = array (サーバーの構成と管理、PHP);
$result = array_merge($book1,$book2);
print_r($result);
?>
結果は次のようになります:
Array ( [0] => Linux サーバーの構成と管理 [1] => ; PHPプログラミング[2] => サーバーの構成と管理[3] => PHP )
---明確かどうかはわかりません
function array_add($str1,$str2) {
if ( !is_array($str1) ) {
return;
}
if ( is_array($str2) ) {
$result = array_merge( $str1,$str2);
} else {
$result = array_push($str1,$str2);
}
return $result;
}
http://www.bkjia.com/PHPjc/869239.html