在 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:我正在回答這個「過時」的問題,因為我認為以前的答案給出的所有循環都太過分了。