0

我得到两个数组 $post_img & $post_sort 结果:

 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  

关键是我认为这应该只需要一个查询就可以实现。我有不同的尝试,但没有一个是好的。

4

3 回答 3

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 />';
}

可能更容易为您的数据库插入同时处理两个数组

于 2013-03-04T14:45:18.593 回答
0

合并数组没有意义,您可以像这样执行 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])

该查询的后半部分可以使用某种循环生成。

于 2013-03-04T14:46:50.397 回答
0

使用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

上面的示例假设您正在使用带有 PDO 的 MySQL。

要以经典方式创建单个 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,',');
于 2013-03-04T14:43:30.610 回答