2012-12-12 34 views
2

,如果我有以下幾點:多維數組PHP的

$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) 

但如果這是任何幫助轉發我不知道。

提前感謝有關該問題的任何脫落光...

+1

您是否要更新每個C爲每b。對於每一個(即:內循環),或者並行結構,其中,在一個元件具有相應的元件b中,其具有在c的這些陣列這導致給定索引的更新? – RonaldBarzell

+0

後一種情況。 a,b和c是相應的元素 – Roy

+1

明白了。史蒂夫剛剛回答你的問題。對他的回答,我會補充說$ array_Length將是你數組的長度(例如:count($ a)),請確保$ a,$ b和$ c具有相同數量的元素。 – RonaldBarzell

回答

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是反的,你剛剛經歷然而許多元素循環是在一個陣列(你說他們都對應海誓山盟),然後拉出從每個相同的元素編號陣列。

+0

太棒了。看起來不錯。我稍後會放棄。 – Roy

0

如果使用在所有陣列相同的索引,你可以使用

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

這與史蒂夫的答案,但他requireds的鑰匙,是從0開始沒有間隙,在這也將整型如果你的鑰匙是字符串或其他什

0

有趣的是,PHP 5.5 will support unpacking multidimensional arrays in 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_*,應該升級到PDOmysqli,這兩者都會使這一點更容易爲你平時的speach:

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

如果三個array具有相同的大小。然後使用for循環並更新每個已修復的key值。

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

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

    endfor;