2009-10-20 77 views
0

數組:PHP陣列覆蓋值,但需要添加到陣列

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 
       ) 

     ) 
) 

我需要什麼

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 
       ) 

     ) 
) 

請告訴我發生

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 
       ) 

     ) 
) 

我想要,它的到來來自查詢結果集

$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 
} 

任何想法,幫助正確的方向?

回答

0

OK,我想我發現了一些作品。我只是扭轉了關鍵指數關係

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

你是否結婚了陣列結構?你可能會由組名稱,即鍵入一個數組得到更好的服務:

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

因爲那麼你可以編寫像這樣:

$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]; 
} 

這種方式也似乎少了幾分凌亂。

+0

+1非常好的做法。如果你真的需要,你也可以這樣做,並將它轉換成你想要的格式。 – soulmerge 2009-10-21 13:15:52

+0

我實際上認爲內部數組也可以是聯合以及'$ tmp_arr [$ row [1]] [$ row [2]] = $ row [3]' – soulmerge 2009-10-21 13:17:14

0

固定的樞軸固定的例子,以保持一個類似的結構運算,而是由名爲鍵設置每個:

$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" 
      ) 
     ) 
    ) 
*/