合并相同键的2个数组值...并检索值

时间:2014-11-23 04:53:57

标签: php arrays

我有2个阵列:

$gather = $_POST['gather'];
$client_id = $_POST['client_id'];

结果:

Array1 ( [0] => hashtag [1] => followers [2] => latitude [3] => followers [4] => hashtag ) 
Array2 ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 

我想使用这样的foreach语句:

foreach($gather as $value)
{
    $update = mysql_query("UPDATE gather set gather_choice = '".$value."'  where client_id = '".$client_id[]."'  ")or die(mysql_error());
}

但我的每个foreach语句都需要使用array1 [0]和array2 [0] ..然后是array1 [1]和array2 [1]

在示例中,我不知道如何使用'“。$ client_id []。”'来获取我的sql查询的正确值...

感谢

3 个答案:

答案 0 :(得分:1)

您需要将键分配给foreach语句中的变量。

foreach($gather as $key => $value) {

}

然后你会使用$client_id[$key]。您也可以使用等同于$gather[$key]的{​​{1}}。

我不会复制您的SQL语句,因为它是危险的并且受SQL注入的影响,我强烈建议您查看PDO或MySQLi并使用预准备语句。您不应该直接在查询中使用用户输入($value)。

答案 1 :(得分:1)

假设两个数组的大小相同,您可以使用以下内容:

$gather = $_POST['gather'];
$client_id = $_POST['client_id'];

$total = count($gather);  // count how many elements you have

for ($i = 0; $i < $total; $i++)  // and use a for loop
{
    $update = mysql_query("UPDATE gather set gather_choice = '". $gather[$i] ."'  where client_id = '". $client_id[$i] ."'  ") or die(mysql_error());
}

或者,你可以使用这样的东西,并保留foreach()循环:

$client_id = array_reverse($client_id);  // we reverse the array so that, we can use array_pop on the array, and still get elements in the original order.
foreach($gather as $value)
{
    $update = mysql_query("UPDATE gather set gather_choice = '". $value ."'  where client_id = '". array_pop($client_id) ."'  ") or die(mysql_error());
}

文档:


修改

正如@Devon所说,您的查询容易受到攻击。不推荐使用mysql_*。请改用mysqli_*PDO

请同时查看此问题的答案:Two arrays in foreach loop

答案 2 :(得分:0)

只需使用下面的块

foreach($gather as $key=>$value)
{
    $update = mysql_query("UPDATE gather set gather_choice = '$value'  where client_id = '$client_id[$key]'  ")or die(mysql_error());
}

另外你要考虑改成mysqli,非常简单和安全,而不是mysql _