Kunci tersuai untuk mengisih perkaitan rata berdasarkan tatasusunan lain
P粉541551230
P粉541551230 2023-10-15 19:52:40
0
2
669

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粉541551230
P粉541551230

membalas semua(2)
P粉762730205

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;
}
P粉277824378

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan