0
我想對多維對象進行排序,並且在查看php.net和這裏後,我得到了我應該編寫的函數,然後可以通過usort調用。我在語法上遇到了一些麻煩。我從來沒有寫過這麼複雜的事情,並試圖找出它感覺像一個mindbender ...php對一個嚴重的多維數組進行排序
我正在使用在這篇文章末尾張貼的數組。我想過濾掉重複的[n]值。但是,這對我來說是棘手的部分,我想保留[d]值最小的[n]值。
所以,如果我有(和本實施例中被簡化,真正的陣列是在該柱的端部):
Array (
[7777] => Array
([0] => Array
([n] => '12345' [d] => 1)
[1] => Array
([n] => '67890' [d] => 4)
)
[8888] => Array
([2] => Array
([n] => '12345' [d] => 10)
[3] => Array
([n] => '67890' [d] => 2)
)
)
我想篩選出根據[d重複[n]的值]價值,讓我風與此:
Array (
[7777] => Array
([0] => Array
([n] => '12345' [d] => 1)
)
[8888] => Array
[3] => Array
([n] => '67890' [d] => 2)
)
)
我試着寫張貼在php.net功能CMP例子的不同變化,但我一直沒能得到任何工作,並我認爲這是因爲我不清楚如何使用它們的例子來遍歷它...
我想:
function cmp($a, $b)
{
if($a['n'] == $b['n'])
{
if($a['d'] == $b['d'])
{
return 0;
}
}
return ($a['n'] < $b['n']) ? -1 : 1;
}
但是,這真的沒有在所有的工作......總之,這裏就是我想用...幫助是極大的讚賞工作真正陣!
Array
(
[32112] => Array
(
[0] => Array
(
[n] => '02124'
[d] => '0'
)
[1] => Array
(
[n] => '02124'
[d] => '0.240101905123744'
)
[2] => Array
(
[n] => '11050'
[d] => '0.441758632682761'
)
[3] => Array
(
[n] => '02186'
[d] => '0.317514080260304'
)
)
[43434] => Array
(
[4] => Array
(
[n] => '02124'
[d] => '5.89936971664429e-05'
)
[5] => Array
(
[n] => '02124'
[d] => '0.145859264792549'
)
[6] => Array
(
[n] => '11050'
[d] => '0.327864593457739'
)
[7] => Array
(
[n] => '11050'
[d] => '0.312135345168295'
)
)
)
嗯,我試過這個,但它沒有工作,所以也許我不理解,或者我的語法錯誤? $ m = 1; $ v = 0; 的foreach($納秒爲$密鑰=> $值) \t { \t的foreach($值K2 $) \t { \t如果($值[$米] [ 'N'] == \t $值$ v ['n'] && $ value [$ m] ['d']> $ value [$ v] ['d']) \t { \t \t unset($ ns [$ key] [$ m ]); \t} \t $ m ++; $ V ++; \t \t} } – BigDogsBarking 2010-04-26 15:09:18
用於,而不是foreach。 – webbiedave 2010-04-26 16:18:30