php - php排序多嵌套数组
问题描述
我在使用嵌套数组等对数组进行排序时遇到问题。数组看起来像这样:
$array = array(
"item" => array(
"childs" => array(
01 => array(
"name" => "Min",
"content" => "CC",
"number" => "111"
),
02 => array(
"name" => "Min",
"content" => "BB",
"number" => "101"
),
03 => array(
"name" => "Min",
"content" => "AA",
"number" => "115"
),
04 => array(
"name" => "Min",
"content" => "BB",
"number" => "100"
),
)
),
);
我想按 CONTENT 和 NUMBER 对该数组(具体的孩子)进行排序。这是我的代码:
foreach ($array as $item) {
foreach($item as $childs) {
$row = array();
$number = array();
foreach($childs as $child) {
$row[] = $child["row"];
$number[] = $child["number"];
}
array_multisort($number, SORT_ASC, SORT_NUMERIC, $row, SORT_ASC, $childs);
};
};
但这似乎不起作用。我没有错误,但数组未排序。有人可以帮帮我吗?
解决方案
我猜根本原因是:“当你循环数组时。数组中的项目不是引用变量(你已经在另一个数组中排序)”。
您可以通过传递引用变量来尝试。
foreach ($array as &$item) {
foreach($item as &$childs) {
$row = array();
$number = array();
foreach($childs as $child) {
$row[] = $child["row"];
$number[] = $child["number"];
}
array_multisort($number, SORT_ASC, SORT_NUMERIC, $row, SORT_ASC, $childs);
};
};
推荐阅读
- postgresql - 使用 postgres 数据库进行应用程序测试的 Docker 容器
- javascript - 为页面的每个类链接打开一个弹出窗口不起作用输入[i]未定义我该如何解决?
- jenkins - Jenkins Job 中的分支源的参考规范以构建 Master 和所有已批准的拉取请求?
- visual-studio - Visual Studio Web 测试 - 记录后台请求
- odoo - 如何在自定义模块中创建新用户组?
- r - 绘制 XTS 对象的变化
- angular - 创建嵌入式视图时图标不显示
- python - 如何在 Python 中将 json 文件解析为 DataFrame
- sql - SQL 运算符 喜欢
- java - 将 BigDecimal 转换为 scale = 2 的反面