[PHP] Trier un tableau par valeur numérique descendante
Publié le 07/02/2020 • Actualisé le 07/02/2020
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
<?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]);
}
}