按照一维数组对多维数组进行排序

3
多维数组看起来像这样:
$arr = array(
  array(
    'id' => 'first',
    'name' => 'John',
    'age' => 17,
  ),

  array(
    'id' => 'second',
    'name' => 'Mary',
    'age' => 26,
  ),

  array(
    'id' => 'third',
    'name' => 'Eve',
    'age' => 21,
  ),

);

决定如何对$arr进行排序的数组如下:

$sort_by = array('third', 'first', 'second');

因此,我想根据第一个数组的id字段和第二个数组来对其元素进行排序。

在这种情况下,第一个数组应该是:

$arr = array(
  array(
    'id' => 'third',
    'name' => 'Eve',
    'age' => 21,
  ),

  array(
    'id' => 'first',
    'name' => 'John',
    'age' => 17,
  ),

  array(
    'id' => 'second',
    'name' => 'Mary',
    'age' => 26,
  ),


); 

1
可能是根据另一个数组的顺序对排序数组子键进行排序的重复问题。 - Felix Kling
2个回答

4
function sort_by_1d($item_1, $item_2)
{
    $sort_by = array('third', 'first', 'second');
    $item_1_i = array_search($item_1['id'], $sort_by);
    $item_2_i = array_search($item_2['id'], $sort_by);
    return $item_1_i - $item_2_i;
}

usort($arr, 'sort_by_1d');

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接