php - 使用变量定位子数组并将其移动到主数组的顶部
问题描述
二维数组
需要以 keyid
等于变量的子数组为目标,$id
并将该目标数组移动到主数组的顶部
$id = 2;
$rows = Array(
[0] => Array(
[id] => 1 [0] => 1
[top] => vid [1] => vid)
// target array
[1] => Array(
[id] => 2 [0] => 2 // target element
[top] => img [1] => img)
[2] => Array(
[id] => 3 [0] => 3
[top] => gall [1] => gall)
)
$target = // subarray having [id] => 2
选择目标后,我想程序是这样的:
unset($rows[$target]);
$rows = $target + $rows;
所以问题是选择目标子数组
解决方案
您可以使用usort来实现此目的。第二个参数允许您提供用户定义的排序功能,您可以在那里找到您期望的元素。
$id = 2;
$rows = array(
0 => array(
"id" => 1,
"test" => 'test 0'
),
1 => array(
"id" => 2,
"test" => 'test 1'
),
2 => array(
"id" => 3,
"test" => 'test 2'
)
);
$clonedRows = array_merge($rows);
usort($clonedRows, function ($a, $b) use ($id) {
if ($a["id"] === $id) return -1;
return 1;
});
var_dump($clonedRows);
var_dump($rows);
推荐阅读
- rust - 如何固定 RefCell 内容?
- visual-studio - 使用 Web 内容自定义 VSTS Wiki
- asp.net - ASP.NET Core Razor Pages 项目 - 已检测到不适用于集成托管管道模式的 ASP.NET 设置
- python - 不使用元组的多索引列的 set_index
- c - 在C中参考命名的结构成员直接初始化或分配变量数组的结构成员?
- javascript - 为什么没有将类添加到加载的导航元素?
- javascript - 如何在 Gutenberg 中使用序列化数据?
- sql-server - 将 case 语句切换为常量会大大降低查询速度
- visual-studio - 为什么 .NET Core 3.1 在我安装后没有出现在 Visual Studio 中?
- c# - 用于 Sharepoint 搜索文档身份验证问题的 C# REST API