Clé personnalisée pour trier les associations plates en fonction d'un autre tableau
P粉541551230
P粉541551230 2023-10-15 19:52:40
0
2
670

Est-il possible de faire quelque chose comme ça en PHP ? Comment écririez-vous une fonction ? Voici un exemple. L’ordre est le plus important.

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

Je veux faire quelque chose de similaire

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

Parce qu'à la fin j'ai utilisé foreach() et qu'elles n'étaient pas dans le bon ordre (parce que j'ajoutais les valeurs à une chaîne qui devait être dans le bon ordre, et je ne connaissais pas toutes les clés du tableau/ valeurs au préalable).

J'ai regardé les fonctions de tableau internes de PHP mais il semble qu'elles ne puissent trier que par ordre alphabétique ou numérique.

P粉541551230
P粉541551230

répondre à tous(2)
P粉762730205

Je vous donne :

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

Utilisez simplement array_mergearray_replacearray_merge fonctionne en commençant par le tableau que vous fournissez (dans le bon ordre), puis en écrasant/ajoutant les clés avec les données du tableau réel :

$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 : je réponds à cette question "obsolète" car je pense que toutes les boucles données par les réponses précédentes sont de trop.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal