首页 > 解决方案 > 使用变量定位子数组并将其移动到主数组的顶部

问题描述

二维数组
需要以 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;

所以问题是选择目标子数组

标签: phparrays

解决方案


您可以使用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);

推荐阅读