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