国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

自訂鍵對(duì)基於另一個(gè)陣列的平面關(guān)聯(lián)進(jìn)行排序
P粉541551230
P粉541551230 2023-10-15 19:52:40
0
2
764

在 PHP 中可以做這樣的事情嗎?你會(huì)如何寫(xiě)一個(gè)函數(shù)?這是一個(gè)例子。順序是最重要的。

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

我想做一些類(lèi)似的事情

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

因?yàn)樽钺嵛沂褂昧?foreach() 並且它們的順序不正確(因?yàn)槲覍⒅蹈郊拥叫枰凑_順序的字串中,並且我事先不知道所有的數(shù)組鍵/值)。

我查看了 PHP 的內(nèi)部陣列函數(shù),但似乎只能按字母或數(shù)字排序。

P粉541551230
P粉541551230

全部回覆(2)
P粉762730205

給你:

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粉277824378

只需使用array_mergearray_replace。 array_merge 的工作原理是從您提供的數(shù)組開(kāi)始(按正確的順序),然後使用實(shí)際數(shù)組中的資料覆蓋/添加鍵:

$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:我正在回答這個(gè)「過(guò)時(shí)」的問(wèn)題,因?yàn)槲艺J(rèn)為以前的答案給出的所有循環(huán)都太過(guò)分了。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板