我得到两个数组$post_img &美元postrongort结果:
Array
(
[0] => test1.jpg
[1] => test2.jpg
[2] => test3.jpg
)
Array
(
[0] => 3
[1] => 1
[2] => 2
)
我想合并它们:
Array
(
[Image] => Array
(
[0] => test1.jpg
[1] => test2.jpg
[2] => test3.jpg
)
[Sort] => Array
(
[0] => 3
[1] => 1
[2] => 2
)
)
因为我认为这是最好的方式将它们插入到我的数据库中每个条目在一行中,如:
ID | Image | Sort
1 test1.jpg 3
2 test2.jpg 1
3 test3.jpg 2
关键是我认为这应该是可能的,只有一个查询。我试过很多次,但结果都不好。
使用多重迭代器
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($post_img));
$mi->attachIterator(new ArrayIterator($post_sort));
foreach ( $mi as $value ) {
list($filename, $sortOrder) = $value;
echo $filename , ' => ' , $sortOrder , '<br />';
}
可能更容易同时处理数据库插入
使用array
:
$newarray = array('Image' => $post_img, 'Sort' => $post_sort);
要向表中添加数据,您可以使用原始数组:
$sql = "INSERT INTO tablename SET Image=:image, Sort=:sort";
$dbImgInsert = $db->prepare($sql); // preparing sql for insert, using parameters
$c = count($post_img)-1;
for ($i=0;$i<=$c;$i++;) { // looping through the arrays
$dbImgInsert->execute(array( // inserting the data into the prepared query and into the db
'image' => $post_img[$i],
'sort' => $post_sort[$i]
));
} // for
上面的例子假设你正在使用MySQL和PDO。
以经典方式创建单个insert语句,执行:
$sql="";
$c = count($post_img)-1;
for ($i=0;$i<=$c;$i++;) { // looping through the arrays
$sql.="('{$post_img[$i]}', '{$post_sort[$i]}'), ";
}
$sql ="INSERT INTO tablename (Image, Sort) VALUES " . trim($sql,',');
合并数组是没有意义的,你可以做一个SQL语句,像这样:
INSERT INTO tbl (Image, Sort) VALUES
($post_img[0], $post_sort[0]),
($post_img[1], $post_sort[1]),
($post_img[2], $post_sort[2]),
($post_img[3], $post_sort[3])
查询的后半部分可以使用某种循环生成。