cari

Rumah  >  Soal Jawab  >  teks badan

Kunci tersuai untuk mengisih perkaitan rata berdasarkan tatasusunan lain

Adakah mungkin untuk melakukan sesuatu seperti ini dalam PHP? Bagaimanakah anda menulis fungsi? Berikut adalah contoh. Pesanan adalah yang paling penting.

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

Saya mahu melakukan sesuatu yang serupa

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

Kerana pada akhirnya saya menggunakan foreach() dan mereka tidak berada dalam susunan yang betul (kerana saya menambahkan nilai pada rentetan yang perlu dalam susunan yang betul, dan saya tidak tahu semua kekunci tatasusunan/ nilai terlebih dahulu).

Saya melihat fungsi tatasusunan dalaman PHP tetapi nampaknya ia hanya boleh mengisih mengikut abjad atau numerik.

P粉541551230P粉541551230425 hari yang lalu663

membalas semua(2)saya akan balas

  • P粉762730205

    P粉7627302052023-10-16 17:12:15

    Beri anda:

    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;
    }

    balas
    0
  • P粉277824378

    P粉2778243782023-10-16 00:38:57

    Hanya gunakan array_mergearray_replacearray_merge berfungsi dengan bermula dengan tatasusunan yang anda sediakan (dalam susunan yang betul) dan kemudian tulis ganti/tambah kekunci dengan data daripada tatasusunan sebenar:

    $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: Saya menjawab soalan "lapuk" ini kerana saya rasa semua gelung yang diberikan oleh jawapan sebelumnya adalah terlalu banyak.

    balas
    0
  • Batalbalas