Benutzerdefinierter Schlüssel zum Sortieren flacher Zuordnungen basierend auf einem anderen Array
P粉541551230
P粉541551230 2023-10-15 19:52:40
0
2
654

Ist es möglich, so etwas in PHP zu machen? Wie würden Sie eine Funktion schreiben? Hier ist ein Beispiel. Ordnung ist das Wichtigste.

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

Ich möchte etwas Ähnliches tun

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

Weil ich am Ende foreach() verwendet habe und sie nicht in der richtigen Reihenfolge waren (weil ich die Werte an eine Zeichenfolge angehängt habe, die in der richtigen Reihenfolge sein musste, und ich nicht alle Array-Schlüssel kannte/ Werte vorher angeben).

Ich habe mir die internen Array-Funktionen von PHP angesehen, aber es scheint, dass sie nur alphabetisch oder numerisch sortieren können.

P粉541551230
P粉541551230

Antworte allen(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_replacearray_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:我正在回答这个“过时”的问题,因为我认为以前的答案给出的所有循环都太过分了。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage