[PHP] Trier un tableau par valeur numérique descendante

Publié le 07/02/2020 • Actualisé le 07/02/2020


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous allons voir comment trier un tableau PHP par valeur numérique descendante. C'est le genre de code que j'oublie parfois et ou j'ai besoin d'aller regarder la documentation pour voir comment faire. Je pensais d'abord qu'il fallait passer le flag SORT_NUMERIC à la fonction arsort mais ce n'est pas nécessaire si les valeurs sont des nombres correctement formatés.


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet76Trait
{
    public function snippet76(): void
    {
        $myArray = [
            'orange' => 3,
            'lemon' => 1,
            'banana' => 5,
            'kiwi' => 11,
            'apple' => 2,
        ];

        print_r($myArray);
        arsort($myArray);
        print_r($myArray);

        // That's it! 😁
    }
}

 Exécuter le snippet  ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire

  Travaillez avec moi !

<?php

declare(strict_types=1);

namespace App\Tests\Integration\Controller\Snippets;

use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;

/**
 * @see Snippet76Trait
 */
final class Snippet76Test extends KernelTestCase
{
    /**
     * @see Snippet76Trait::snippet76
     */
    public function testSnippet76(): void
    {
        $myArray = [
            'orange' => 3,
            'lemon' => 1,
            'banana' => 5,
            'kiwi' => 11,
            'apple' => 2,
        ];
        arsort($myArray);
        $values = array_values($myArray);
        self::assertSame(11, $values[0]);
        self::assertSame(1, $values[\count($myArray) - 1]);
    }
}