Ordinare un array multidimensionale con php

29 Giugno 2017

Spesso capita di dover ordinare array multidimensionali e di base php non fornisce funzioni che fanno sempre al caso nostro.

Mi riferisco ad array tipo questo:

Array (
   [0] => Array (
      [pos] => 4
      [file] => 4.mp3
      [timeSec] => 30
   )
   [3] => Array (
      [pos] => 6
      [file] => 6.mp3
      [timeSec] => 30
   )
   [4] => Array (
      [pos] => 7
      [file] => 7.mp3
      [timeSec] => 30
   )
   [5] => Array (
      [pos] => 2
      [file] => 2.mp3
      [timeSec] => 30
   )
   [6] => Array (
      [pos] => 1
      [file] => 1.mp3
      [timeSec] => 25
   )
   [8] => Array (
      [pos] => 3
      [file] => 3.mp3
      [timeSec] => 30
   )
)

Supponiamo di voler ordinare questo array attraverso il valore dell’elemento con chiave “pos”. La funzione che fa al caso nostro è la seguente:

function sort_multi_array($array, $internalkey) {
	
  $tmp = $new = array();
  
  foreach($array as $key => $internalArray) {

    $tmp[$key] = strtolower($internalArray[$internalkey]);
  }

  asort($tmp);

  foreach($tmp as $key => $internalArray) {

    $new[] = $array[$key];
  }

  return $new;
}

sort_multi_array($array, 'pos');

Comments

  1. Daniele Barisano - 2 Marzo 2018 at 13:04 - Rispondi

    Ottimo Matteo.. Funzione che potrebbe servirmi in un mio lavoro. E complimenti per i lavori Web Based fatti

    • admin - 7 Marzo 2018 at 9:39 - Rispondi

      Grazie Daniele, lieto di esserti stato d’aiuto 🙂 Se mai servisse, sempre disponibile al confronto!

  2. Daniele Barisano - 10 Marzo 2018 at 10:37 - Rispondi

    Si.. Non c’è problema. Sei anche uno sviluppatore Magento?


Lascia un commento

Il tuo indirizzo email non sarà pubblicato.