2017-10-03 5 views
0

J'ai une structure de tableau qui ressemble à ceci.Tri du niveau de tableau imbriqué multidimensionnel spécifique par le sous-élément valeur nom

Array 
    (
     [category1] => Array 
      (
       [2694] => Array 
        (
         [node_name] => "B" 

        ) 

       [2695] => Array 
        (
         [node_name] => "A" 

        ) 
       [2696] => Array 
        (
         [node_name] => "C" 

        ) 
      ) 
    ) 

Je veux tableau parent avec le numéro par nom de noeud. Le résultat attendu devrait être comme ça.

Array 
(
    [category1] => Array 
     (
      [2695] => Array 
       (
        [node_name] => "A" 

       ) 

      [2694] => Array 
       (
        [node_name] => "B" 

       ) 
      [2696] => Array 
       (
        [node_name] => "C" 

       ) 
     ) 
) 

J'ai essayé multisort et uasort utilisant funcion

function cmp($a, $b) { 
    return $a['node_name'] > $b['node_name'] ? 1 : -1; 
} 

Mais il y a une plusieurs catégories qui devraient être prises à l'esprit, donc j'essayé de itérer les catégories et utiliser uasort ou multisort sur les éléments internes . Je ne sais pas comment j'aborderais ce problème, donc je me demandais si quelqu'un avait de l'expérience dans la résolution de tableaux imbriqués et le tri d'un niveau spécifique basé sur le nom des sous-éléments.

Toute aide serait appréciée.

Répondre

0

Vous faites la bonne chose que je m'attends.

<?php 

$cats = array(
    'category1' => array(
    2694 => array('node_name' => 'B'), 
    2695 => array('node_name' => 'A'), 
    2696 => array('node_name' => 'C'), 
), 
    'category2' => array(
    2691 => array('node_name' => 'T'), 
    2692 => array('node_name' => 'S'), 
    2693 => array('node_name' => 'A'), 
) 
); 

function cmp($a, $b) { 
    return $a['node_name'] > $b['node_name'] ? 1 : -1; 
} 

foreach ($cats as $category => $data) { 
    uasort($data, 'cmp'); 
    $cats[$category] = $data; 
} 

var_dump($cats); 

Sortie:

array(2) { 
    ["category1"]=> 
    array(3) { 
    [2695]=> 
    array(1) { 
     ["node_name"]=> 
     string(1) "A" 
    } 
    [2694]=> 
    array(1) { 
     ["node_name"]=> 
     string(1) "B" 
    } 
    [2696]=> 
    array(1) { 
     ["node_name"]=> 
     string(1) "C" 
    } 
    } 
    ["category2"]=> 
    array(3) { 
    [2693]=> 
    array(1) { 
     ["node_name"]=> 
     string(1) "A" 
    } 
    [2692]=> 
    array(1) { 
     ["node_name"]=> 
     string(1) "S" 
    } 
    [2691]=> 
    array(1) { 
     ["node_name"]=> 
     string(1) "T" 
    } 
    } 
} 
+0

Oui, qui a fait l'affaire, je l'ai fait la même chose, mais je ne mettre à jour le tableau de parent, je vous remercie! –