小编典典

基于另一个数组的键对数组进行排序?

all

在 PHP 中可以做这样的事情吗?您将如何编写函数?这是一个例子。顺序是最重要的。

$customer['address'] = '123 fake st';
$customer['name'] = 'Tim';
$customer['dob'] = '12/08/1986';
$customer['dontSortMe'] = 'this value doesnt need to be sorted';

我想做一些类似的事情

$properOrderedArray = sortArrayByArray($customer, array('name', 'dob', 'address'));

因为最后我使用了一个 foreach() 并且它们的顺序不正确(因为我将值附加到一个需要以正确顺序排列的字符串并且我事先不知道所有数组键/值)。

我查看了 PHP 的内部数组函数,但似乎只能按字母或数字排序。


阅读 46

收藏
2022-08-08

共1个答案

小编典典

只需使用array_mergeor
array_replacearray_merge通过从您提供的数组开始(以正确的顺序)并使用实际数组中的数据覆盖/添加键来工作:

$customer['address']    = '123 fake st';
$customer['name']       = 'Tim';
$customer['dob']        = '12/08/1986';
$customer['dontSortMe'] = 'this value doesnt need to be sorted';

$properOrderedArray = array_merge(array_flip(array('name', 'dob', 'address')), $customer);
// or
$properOrderedArray = array_replace(array_flip(array('name', 'dob', 'address')), $customer);

// $properOrderedArray: array(
//   'name'       => 'Tim',
//   'dob'        => '12/08/1986',
//   'address'    => '123 fake st',
//   'dontSortMe' => 'this value doesnt need to be sorted')

PS:我正在回答这个“陈旧”的问题,因为我认为作为先前答案给出的所有循环都是多余的。

2022-08-08