PHP对数组键值执行foreach

时间:2014-10-18 16:09:39

标签: php

我有一个数组(下面),我需要从中执行多个MySQL插入。

KEY是需要插入的值,VALUE是需要插入的次数。

例如,在第一次迭代中,我希望插入" 1"十二次。在第二次迭代中,我希望插入" 2"二十八次。

Array ( [1] => 12 [2] => 28 [3] => 21 [4] => 9 [5] => 0 )

现在,我知道最好使用一个查询来插入多行,而不是单独的INSERT查询,所以我希望下面的代码能够反映这一点。

我的问题是:如何迭代键VALUE,而不是单个键(虽然我也需要遍历键)?

$insert = array(); 
foreach ($ret AS $key => $item)                 // $ret is the array above
{
    $insert[] = "('". mysql_real_escape_string($item) . "'," . $key . "')";
     // This insert query should repeat only as many times as each array value
}

echo "INSERT INTO table (id, key) VALUES " . implode(',', $insert);

2 个答案:

答案 0 :(得分:2)

你需要在foreach中运行第二个循环

foreach ($ret as $key => $item) {
    for($i=1; $i<=$item; $i++) {
        $insert[] = "('". mysql_real_escape_string($item) . "'," . $key . "')";
    }
}

并确保您的ID在表格中不是主要唯一。

答案 1 :(得分:0)

使用函数array_fill并连接或合并结果

http://php.net/manual/en/function.array-fill.php

Concat是$ array1 + $ array2

Array_merge是

http://php.net/manual/en/function.array-merge.php