次のコードは機能しますが、すべてのネストされた配列の長さが同じであると想定しています。つまり、各ネストされた配列には、最初のネストされた配列で定義されたすべての属性の値が含まれています。
$array = array(
array('name', 'age', 'gender' ),
array('Ian', 24, 'male'),
array('Janice', 21, 'female')
);
$fields = implode(', ', array_shift($array));
$values = array();
foreach ($array as $rowValues) {
foreach ($rowValues as $key => $rowValue) {
$rowValues[$key] = mysql_real_escape_string($rowValues[$key]);
}
$values[] = "(" . implode(', ', $rowValues) . ")";
}
$query = "INSERT INTO table_name ($fields) VALUES (" . implode (', ', $values) . ")";
このソリューションは、他のすべてのネストされた配列が同じ長さである限り、最初のネストされた配列で定義された任意の数の属性で機能します。上記の配列の場合、出力は次のようになります。
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
デモについては、http://codepad.org/7SG7lHaH を参照してください。 、ただし、codepad.orgでmysql_real_escape_string()の呼び出しを削除したことに注意してください。これは、関数が許可されていないためです。独自のコードでは、それを使用する必要があります。