【发布时间】:2020-07-08 21:23:14
【问题描述】:
我有如下图所示的多维数组,我想根据php中的[name]字段进行排序。
Array
(
[chicago] => Array
(
[community_name] => Chicago, IL
[areas] => Array
(
[0] => Array
(
[name] => Array
(
[0] => HELLO WORLD.
)
)
[1] => Array
(
[name] => Array
(
[0] => Hello
)
)
[2] => Array
(
[name] => Array
(
[0] => Administration.
)
)
)
)
[chicago-and-surrounding-areas] => Array
(
[community_name] => Chicago (and surrounding areas), IL
[areas] => Array
(
[0] => Array
(
[name] => Array
(
[0] => Carry.
)
)
[1] => Array
(
[name] => Array
(
[0] => Bacteria.
)
)
)
)
[cambridge-chicago] => Array
(
[community_name] => Cambridge (Chicago), IL
[areas] => Array
(
[0] => Array
(
[name] => Array
(
[0] => Responsibility.
)
)
[1] => Array
(
[name] => Array
(
[0] => Bacteria.
)
)
)
)
)
这就是我想要实现的目标:
Array
(
[chicago] => Array
(
[community_name] => Chicago, IL
[areas] => Array
(
[0] => Array
(
[name] => Array
(
[0] => Administration
)
)
[1] => Array
(
[name] => Array
(
[0] => Hello
)
)
[2] => Array
(
[name] => Array
(
[0] => HELLO WORLD.
)
)
)
)
[chicago-and-surrounding-areas] => Array
(
[community_name] => Chicago (and surrounding areas), IL
[areas] => Array
(
[0] => Array
(
[name] => Array
(
[0] => Bacteria.
)
)
[1] => Array
(
[name] => Array
(
[0] => Carry.
)
)
)
)
[cambridge-chicago] => Array
(
[community_name] => Cambridge (Chicago), IL
[areas] => Array
(
[0] => Array
(
[name] => Array
(
[0] => Bacteria.
)
)
[1] => Array
(
[name] => Array
(
[0] => Responsibility.
)
)
)
)
)
这是我尝试过的,但我认为还有更多工作要做。
function cmp($a, $b)
{
if ($a["name"] == $b["name"]) {
return 0;
}
return ($a["name"] < $b["name"]) ? -1 : 1;
}
usort($response,"cmp");
问题陈述:
我想知道我需要在上面的 php 代码中进行哪些更改,以便它根据 name 字段对数组进行排序。上面我的 php 代码没有对任何东西进行排序。它只是按原样打印输入。
【问题讨论】:
-
如果 $response 是你的数组,它的元素没有'name'键,它们的键是'comunity...'、'area'等
-
也许您的意思是
foreach($response as $town){ usort($town['areas'] , 'cmp' ); }或类似的东西?您的 cmp 函数还应该比较$a['name'][0]==$b['name'][0]...
标签: php arrays sorting multidimensional-array