2009-10-20 9 views
0

Le tableau:PHP multidisque écraser les valeurs mais doivent ajouter à un tableau

Array 
(
    [0] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 1.php 
        [1] => Title 1 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 2.php 
        [1] => Title 2 
       ) 

     ) 

    [2] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 3.php 
        [1] => Title 3 
       ) 

     ) 

    [3] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 4.php 
        [1] => Title 4 
       ) 

     ) 

    [4] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 5.php 
        [1] => Title 5 
       ) 

     ) 

    [5] => Array 
     (
      [0] => Trouble Shooting 
      [1] => Array 
       (
        [0] => a.php 
        [1] => Title A 
       ) 

     ) 

    [6] => Array 
     (
      [0] => Trouble Shooting 
      [1] => Array 
       (
        [0] => b.php 
        [1] => Title B 
       ) 

     ) 

    [7] => Array 
     (
      [0] => Deprecated 
      [1] => Array 
       (
        [0] => 123.php 
        [1] => Title 123 
       ) 

     ) 

    [8] => Array 
     (
      [0] => Admin Only 
      [1] => Array 
       (
        [0] => admin.php 
        [1] => Title Admin 
       ) 

     ) 
) 

Ce que je dois

Array 
(
    [0] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 1.php 
        [1] => Title 1 
        [3] => 2.php 
        [4] => Title 2 
        [5] => 3.php 
        [6] => Title 3 
        [7] => 4.php 
        [8] => Title 4 
        [9] => 5.php 
        [10] => Title 5 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Trouble Shooting 
      [1] => Array 
       (
        [0] => a.php 
        [1] => Title A 
        [3] => b.php 
        [4] => Title B 
       ) 

     ) 

    [2] => Array 
     (
      [0] => Deprecated 
      [1] => Array 
       (
        [0] => 123.php 
        [1] => Title 123 
       ) 

     ) 

    [3] => Array 
     (
      [0] => Admin Only 
      [1] => Array 
       (
        [0] => admin.php 
        [1] => Title Admin 
       ) 

     ) 
) 

Ce qui est passe

Array 
(
    [0] => Array 
     (
      [0] => Service Simulators 
      [1] => Array 
       (
        [0] => 5.php 
        [1] => Title 5 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Trouble Shooting 
      [1] => Array 
       (
        [0] => b.php 
        [1] => Title B 
       ) 

     ) 

    [2] => Array 
     (
      [0] => Deprecated 
      [1] => Array 
       (
        [0] => 123.php 
        [1] => Title 123 
       ) 

     ) 

    [3] => Array 
     (
      [0] => Admin Only 
      [1] => Array 
       (
        [0] => admin.php 
        [1] => Title Admin 
       ) 

     ) 
) 

Ce que je suis en train, il vient à partir d'un ensemble de résultats de requête

$tmp_arr = array(); 

while($row = mysql_fetch_row($result)) 
{ 
    // $row[1] = groupname 
    // $row[2] = pagename 
    // $row[3] = pagetitle 

    // Push to array 
    $build_arr_items = array($row[2],$row[3]); 

    array_push($tmp_arr, array($row[1], $build_arr_items)); // This builds the first example 

    //$tmp_arr[$row[1]]=$build_arr_items; // this is the overwrite example 
} 

des pensées, de l'aide dans la bonne direction?

Répondre

0

OK Je pense avoir trouvé quelque chose qui fonctionne. Je viens d'inverser les relations de l'index clé

$tmp_arr[$row[2]]=$row[1]; 
$tmp_arr[$row[3]]=$row[1]; 
1

Êtes-vous marié à cette structure de tableau? Vous pourriez être mieux servis par un tableau indexé par le nom du groupe à savoir:

Array(
    'Service Simulators' => array(
           [0] => 1.php 
           [1] => Title 1 
           [3] => 2.php 
          ) 
     //etc... 
    ) 

Parce que vous pouvez coder comme ceci:

$tmp_arr = array(); 

while($row = mysql_fetch_row($result)) 
{ 
    // $row[1] = groupname 
    // $row[2] = pagename 
    // $row[3] = pagetitle 

     $tmp_arr[$row[1]][] = $row[2]; 
     $tmp_arr[$row[1]][] = $row[3]; 
} 

De cette façon, semble aussi un peu moins salissant.

+0

+1 très bonne approche. Vous pouvez aussi le faire de cette façon et le transformer en votre format désiré, si vous en avez vraiment besoin. – soulmerge

+0

Et je pense en fait que le tableau interne pourrait aussi être associatif '$ tmp_arr [$ row [1]] [$ row [2]] = $ row [3]' – soulmerge

0

exemple de pivot fixe pour maintenir une structure similaire à l'op, mais chaque paramètre par named clé:

$tmp_arr = array(); 
while($row = mysql_fetch_row($result)){ 
    // $row[1] = groupname 
    // $row[2] = pagename 
    // $row[3] = pagetitle 

    $tmp_arr[ $row[1] ] = array($row[2], $row[3]); 
} 
/* 
    Output 
    array(
     "Group Name" => Array(
      Array(
       0 => "pagename" 
       1 => "pagetitle" 
      ) 
     ) 
    ) 
*/