2

如果我有以下情况:

$a = array();

然后想在更新查询中使用它的元素,我建议这样做:

foreach($a as $value) {

$update = mysql_query("UPDATE tb SET username = '$value'");

} 

但是,如果我有很多数组并且想在更新中使用每个数组的一个元素,我该怎么办?

说...

$a = array();
$b = array();
$c = array();

$update = mysql_query("UPDATE tb SET username = 'element of a', image = 'element of b', address = 'element of c'...");

我将如何使用 foreach 来实现这一点。我知道我可以这样做:

$d = array($a, $b, $c)

但是,如果这对我有任何帮助,我不知道。

提前感谢您对问题的任何了解...

4

4 回答 4

2

使用for循环。

例子:

for($i=0; $i<$array_Length; $i++)
{
    $update = mysql_query("UPDATE tb SET username = '$a[$i], image = '$b[$i]',  address = '$c[$i]'...");
}

$i 是计数器,您只需遍历一个数组中的许多元素(您说它们都相互对应),然后从每个数组中提取相同的元素编号。

于 2012-12-12T13:45:52.273 回答
0

如果您在所有数组中使用相同的索引,则可以使用

foreach ($a as $key => $value)
{ 
    // do sth. with $value
    // do sth with $b[$key]
}

这类似于史蒂夫的回答,但他要求键是从 0 开始的整数,没有间隙,如果您的键是字符串或其他任何东西,这也将起作用。

于 2012-12-12T13:48:19.637 回答
0

有趣的是,PHP 5.5将支持在 中解包多维数组foreach,但您不太可能选择这样做。假设所有三个列表的长度相同并且具有相同的键,您将不得不坚持使用普通for循环:

$length = min(count($a), count($b), count($c));
for ($x = 0; $x < $length; $x++) {
   $query = "UPDATE tb SET username = '" . mysql_real_escape_string($a[$x]) ...
}

如果您担心数组没有相同的键,您可以先使用array_values它们中的每一个。


我还将就您不应该如何使用mysql_*以及应该如何升级到PDOor进行常规发言mysqli,这两者都会使您更容易做到这一点:

$query = "UPDATE tb SET username = ?, image = ?, address = ?";
$pdo = new PDO;
$stmt = $pdo->prepare($query);
for ($x = 0; $x < $length; $x++) {
   $stmt->execte(array(a[$x], $b[$x], $c[$x]));
}
于 2012-12-12T13:49:30.083 回答
0

如果这三个array具有相同的大小。然后使用for循环并更新每个增加的key值。

    for($i=0;$i<count($a);$i++):

       $option1=$a[$i];
       $option2=$b[$i];
       $option3=$c[$i];         

    endfor;
于 2012-12-12T13:52:00.630 回答