[英]Sorting a 3 dimensional array
我有一個像這樣的數組
Array
(
[0] => Array
(
[0] => Array
(
[szam] => 8
[index] => 0
)
)
[1] => Array
(
[0] => Array
(
[szam] => 1
[index] => 0
)
[1] => Array
(
[szam] => 7
[index] => 1
)
)
我以為我的最后一個cmp可以正常工作
function maxSzerintCsokkeno($item1,$item2)
{
if ($item1['szam'] == $item2['szam']) return 0;
return ($item1['szam'] < $item2['szam']) ? 1 : -1;
}
與foreach
foreach ($tomb as $kulcs => $adat) usort($adat,"maxSzerintCsokkeno");
但是它什么也沒做,建議嗎?
foreach ($tomb as $kulcs => $adat) usort($adat,"maxSzerintCsokkeno");
這只會對子數組數組$ adat進行排序。 這只是暫時存在,直到foreach循環到下一個。 這里的懶惰選項是使用參考:
foreach ($tomb as & $adat) usort($adat,"maxSzerintCsokkeno");
注意&
。 這樣,對$ adat的修改將直接應用到父數組中。
您正在對一個臨時變量進行排序,這意味着未應用更改。 以下應該為您工作:
for($i = 0, $length = count($tomb); $i < $length; $i++)
{
usort($tomb[$i], "maxSzerintCsokkeno");
}
在foreach循環中迭代時,鍵和值變量(代碼中的$kulcs
和$adat
)是數組中實際值的副本。 就像蒂姆·庫珀(Tim Cooper)所說的那樣,您實際上是在對原始值的副本進行排序。
您還可以在foreach循環中通過引用傳遞值。 這意味着您將要修改原始值:
foreach ($tomb as $kulcs => &$adat) usort($adat,"maxSzerintCsokkeno");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.