对 PHP 中的复杂关联数组进行排序
Sort a complex associative array in PHP
我在 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 你可以用一个未命名的临时函数来完成(你不需要一个命名的) .
usort 很简单:给它一个数组和一个函数,告诉它两个参数中哪个更大。类似于:
if($a["visitcount"]>$b["visitcount"]) return 1;
if($a["visitcount"]<$b["visitcount"]) return -1;
return 0;
希望对您有所帮助。
这个问题已经有很多答案了。我喜欢这个:
发帖前仔细观察!
我在 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 你可以用一个未命名的临时函数来完成(你不需要一个命名的) .
usort 很简单:给它一个数组和一个函数,告诉它两个参数中哪个更大。类似于:
if($a["visitcount"]>$b["visitcount"]) return 1;
if($a["visitcount"]<$b["visitcount"]) return -1;
return 0;
希望对您有所帮助。
这个问题已经有很多答案了。我喜欢这个:
发帖前仔细观察!