2

私が以下を持っている場合:

$a = array();

次に、更新クエリでその要素を使用したい場合は、次のようにすることをお勧めします。

foreach($a as $value) {

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

} 

しかし、多くの配列があり、更新でそれぞれの1つの要素を使用したい場合はどうすればよいですか?

言う...

$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はカウンターであり、1つの配列に含まれる要素の数をループして(すべてが互いに対応していると述べた)、各配列から同じ要素番号を引き出します。

于 2012-12-12T13:45:52.273 に答える
0

すべての配列で同じインデックスを使用する場合は、

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

This is similar to Steves answer, but his requireds the keys to be ints beginning from 0 with no gaps, where this will also work if your keys are strings or whatever.

于 2012-12-12T13:48:19.637 に答える
0

Interestingly enough, PHP 5.5 will support unpacking multidimensional arrays in foreach, but it's highly unlikely that's an option for you. You'll have to stick with an ordinary for loop assuming all three lists are the same length and have the same keys:

$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]) ...
}

If you're worried about the arrays not having the same keys, you can use array_values on each of them first.


I'll also give the usual speach about how you shouldn't use mysql_* and should upgrade to PDO or mysqli, both of which would make this a bit easier for you:

$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

3つ両方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 に答える