在 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 的内部数组函数,但似乎只能按字母或数字排序。
P粉7627302052023-10-16 17:12:15
给你:
function sortArrayByArray(array $array, array $orderArray) { $ordered = array(); foreach ($orderArray as $key) { if (array_key_exists($key, $array)) { $ordered[$key] = $array[$key]; unset($array[$key]); } } return $ordered + $array; }
P粉2778243782023-10-16 00:38:57
只需使用array_merge
或array_replace
。 array_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:我正在回答这个“过时”的问题,因为我认为以前的答案给出的所有循环都太过分了。