2013-10-31 28 views
1

我有一個mySQL查詢,轉儲到數組中,進行排序然後顯示,並且完美地工作。更新和排序多維PHP陣列

我的問題是,我想更新這些值,重新排序並顯示。我已經能夠更新這些值,但它在循環內部是一樣的,所以它不會重新排序。然後我關閉循環並重新排序,但它不保存我在第一個循環中做出的更新。非常感謝幫助。

foreach ($arr as $mks){ 
if ($mks['Column1']==$Var) {$mks['Column2'] = $mks['Column2'] + 1; 
} 

我排序的代碼

foreach ($arr as $mks){ 
    echo $mks['Column1'] . ", " . $mks['Column2'] . "<br>"; 
} 

我如何獲得這個重新保存到我的數組正確?我試過在早上的大部分時間使用Google搜索,但已經導致挫敗感。

+0

你保存的更改到一個新的數組,然後回顯新陣? – Jim

回答

0

我覺得這是你所需要的:

foreach ($arr as $key => $mks){ 
    if ($mks[$key] == $Var) { 
     $arr[$key] = $mks+1; 
    } 
} 

現在,$arr將包含修改後的數組,你可以使用/進一步修改,因爲你需要。

+0

謝謝你,這個答案的變化是對我有用。我結束了: foreach($ arr as $ key => $ mks){ if($ mks ['Column1'] == $ Var){$ arr [$ key] ['Column2'] = $ mks ['Column2'] + $ 1;} – user2788110

0

我沒有看到任何「分發代碼」,但你可以嘗試使用引用「&」,而不是拷貝到您的foreach(S)瓦爾:

foreach($arr as & $mks){ 
... 
} 

與其模仿你的細胞就會來給你一個參考,並在它上面做的每一個修改將在數組中保存

0

試着改變你的陣列是這樣,而不是

foreach ($arr as $key => $mks){ 
    if ($mks['Column1']==$Var) {$arr[$key]['Column2'] = $mks['Column2'] + 1; 
}