在PHP中对复杂关联数组排序

在PHP中对复杂关联数组排序,php,arrays,sorting,associative-array,usort,Php,Arrays,Sorting,Associative Array,Usort,我在PHP中有一个关联数组,如: $newarray1 = Array ( [productA] => Array ( [link] => http://sanjosespartan.com/blog/products/agile-java-development/ [visitcount] => 4 ) [productD] => Array ( [link] => http:

我在PHP中有一个关联数组,如:

    $newarray1 = Array (
    [productA] => Array (
        [link] => http://sanjosespartan.com/blog/products/agile-java-development/
        [visitcount] => 4
        )
    [productD] => Array (
        [link] => http://sanjosespartan.com/blog/products/intro-to-go/
        [visitcount] => 1
        )
    [productG] => Array (
        [link] => http://sanjosespartan.com/blog/products/node-js-for-developers/
        [visitcount] => 1
        )
    [productB] => Array (
        [link] => http://sanjosespartan.com/blog/products/beginning-mysql/
        [visitcount] => 1
        )
    [productC] => Array (
        [link] => http://sanjosespartan.com/blog/products/computer-networks/
        [visitcount] => 1
        )
    [productF] => Array (
        [link] => http://sanjosespartan.com/blog/products/mongo-database/
        [visitcount] => 1
        )
    [productH] => Array (
        [link] => http://sanjosespartan.com/blog/products/python/
        [visitcount] => 1
        )
    [productI] => Array (
        [link] => http://sanjosespartan.com/blog/string-theory/
        [visitcount] => 1
        )
    [productJ] => Array (
        [link] => http://sanjosespartan.com/blog/tcs/
        [visitcount] => 1
        )
    [productE] => Array (
        [link] => http://sanjosespartan.com/blog/products/java-complete-refrence/
        [visitcount] => 2
        )
)
现在我需要根据访问次数对整个阵列进行排序。
我尝试使用arsort,但它不起作用。

您需要一个自定义回调函数,通过签出两个外部元素的[visitcount]字段来比较它们。这可以通过usort实现,如果您有一个现代版本的php,您可以通过一个未命名的ad-hoc函数实现,而不需要命名函数

usort很简单:给它一个数组和一个函数,告诉它两个参数中哪个更大。比如:

if($a["visitcount"]>$b["visitcount"]) return 1;
if($a["visitcount"]<$b["visitcount"]) return -1;
return 0;

希望这能有所帮助。

这方面已经有很多答案了。我喜欢这个:


发帖前仔细看看

您用usort标记了它,这也是正确使用的函数。查看示例2,它描述了如何执行此操作。您的代码有太多错误,例如键是常量,将显示未定义,值是字符串,但没有引号,您正在使用数组作为元素,但没有逗号。如果您省略常量元素(如http://sanjosespartan.com/blog/products/ 并在代码中添加了它。