Php 按每六个值分隔数组,并进行MySql插入
我有这样一个数组:Php 按每六个值分隔数组,并进行MySql插入,php,mysql,arrays,Php,Mysql,Arrays,我有这样一个数组: Array ( [0] => A3C0101 [1] => Kun [2] => Kame [3] => 25.08. 14:00 [4] => NE [5] => Sv [6] => A3C0103 [7] => Popo [8] => Ska [9] => 24.08. 17:00 [10] =&
Array (
[0] => A3C0101
[1] => Kun
[2] => Kame
[3] => 25.08. 14:00
[4] => NE
[5] => Sv
[6] => A3C0103
[7] => Popo
[8] => Ska
[9] => 24.08. 17:00
[10] => SO
[11] =>
[12] => A3C0105
[13] => Muka
[14] => Stran
[15] => 24.08. 14:00
[16] => SO
[17] =>
[18] => A3C0107
[19] => Lojoe
[20] => ©kvor
[21] => 25.08. 17:00
[22] => NE
[23] =>
...
...
...
...
...
[467] =>
)
INSERT INTO `table` (`id` ,`one` ,`two`, `date` ,`den` ,`type`)
VALUES
('A3C0101', 'Kun', 'Kame', '25.08. 14:00', 'NE', 'Sv'),
('A3C0103', 'Popo', 'Ska', '24.08. 17:00', 'SO', ''),
('A3C0105', 'Muka', 'Stran', '24.08. 14:00', 'SO', ''),
('A3C0107', 'Lojoe', '©kvor', '25.08. 17:00', 'NE', ''),
...
...
...
我需要用每六个值来分隔它。
我想让MySql插入像这样:
Array (
[0] => A3C0101
[1] => Kun
[2] => Kame
[3] => 25.08. 14:00
[4] => NE
[5] => Sv
[6] => A3C0103
[7] => Popo
[8] => Ska
[9] => 24.08. 17:00
[10] => SO
[11] =>
[12] => A3C0105
[13] => Muka
[14] => Stran
[15] => 24.08. 14:00
[16] => SO
[17] =>
[18] => A3C0107
[19] => Lojoe
[20] => ©kvor
[21] => 25.08. 17:00
[22] => NE
[23] =>
...
...
...
...
...
[467] =>
)
INSERT INTO `table` (`id` ,`one` ,`two`, `date` ,`den` ,`type`)
VALUES
('A3C0101', 'Kun', 'Kame', '25.08. 14:00', 'NE', 'Sv'),
('A3C0103', 'Popo', 'Ska', '24.08. 17:00', 'SO', ''),
('A3C0105', 'Muka', 'Stran', '24.08. 14:00', 'SO', ''),
('A3C0107', 'Lojoe', '©kvor', '25.08. 17:00', 'NE', ''),
...
...
...
每六次形成一次插入。
我希望你能理解
谢谢你的建议!!:-)
菲利普这个相当丑陋的循环应该会起作用。由于所有数组元素似乎都是字符串,这将很容易。如果没有,您可以在内部循环中插入另一个开关,以处理需要日期格式或数字的特定元素
$i=0;
while($i<floor(count($yourArray)/6))
{
$sql="INSERT INTO `table` (`id` ,`one` ,`two`, `date` ,`den` ,`type`)
VALUES (";
for($j=0;$j<6;$j++)
{
$sql.="'".$yourArray[$i+$j]."', ";
}
$sql=rtrim($sql, ',');
$sql.=");";
// Run insert statement here.
$i+=6;
}
$i=0;
而($i您可以使用php函数array\u chunk()
进行此操作。请参见以下内容:
// take array of 6
$input_array = array("1","2","3","4","5","6");
// divide array in 2
$divided_array = array_chunk($input_array, 2));
foreach($divided_array as $value)
{
mysql_query("insert into `table_name` (col1,col2) values '".$value[0]."','".$value[1]."')");
}
尝试此操作。将数组分块,然后将其内爆。如果分块数组的元素少于6个,则插入操作将失败
RTM:谢谢,阿马尔-我没有问这个问题,但我不知道这个函数存在。非常有用。即使是从$I=1
到$iI的简单循环也会忍不住想知道这个数组是从哪里来的,因为它几乎肯定不应该以这种方式展平的。@eggyal我的想法完全正确