2013-03-10 140 views
0

我創建了一個類函數,它接受一個mysql查詢結果並返回一個多維數組,其中第一個數組指針是表列,第二個指針是它的位置的數字指示符在MySQL數據中。從具有變量變量的現有數組創建多維數組

如表有以下欄目:

Groupname 
Groupid 
Groupurl 

我想調用這個方法是:

$arrayname[groupname][1]; 

我已經形成了2個陣列已經分別是:

$colnames其中包含來自特定mysql查詢的所有列和

$$colname它是包含每列中所有數據的列名稱的變量變量。例如:$groupurl是包含該列所有數據的數組。

我似乎無法得到一個循環加入數組作爲一個多維對象,我可以手動執行此特定表,同時,它是一類函數,變量可變部分是打破我= \

================感謝IMSoP給了我這個想法,解決方案是==================

$結果函數是一個成功的MySQL查詢表。

function tableAsMatrix($result) 
{ 
    //declare $results as array for use in loop 
    $results = array(); 

    //this gets all the col names and sets them as $colnames[] 
    while($cols = $result->fetch_field()) 
    { 
     $colnames[] = $cols->name; 
    } 

    //this loops through and assigns all cols as multidimensional $results[colname][id] 
    foreach ($colnames as $fields) 
    { 
     while ($row = $result->fetch_array(MYSQLI_ASSOC)) 
     { 
      foreach($colnames as $field) 
      { 
       $results[$field][] = $row[$field]; 
      } 
     } 
    } 

    //return to object 
    return $results; 

} 
+0

在什麼地方 「變量變量」 $$來colname'而來?爲什麼你不能簡單地填充'$ return [$ colname]'? – IMSoP 2013-03-10 21:52:15

+0

感謝IMSoP,誰給了我這個想法,我在原來的帖子中提出以下內容! – Hawkwah 2013-03-11 10:12:34

+1

[**請勿在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – 2013-03-11 10:18:16

回答

0

我使用的功能是:

function tableAsMatrix($result) 
{ 
    //declare $results as array for use in loop 
    $results = array(); 

    //this gets all the col names and sets them as $colnames[] 
    while($cols = $result->fetch_field()) 
    { 
     $colnames[] = $cols->name; 
    } 

    //this loops through and assigns all cols as multidimensional $results[colname][id] 
    foreach ($colnames as $fields) 
    { 
     while ($row = $result->fetch_array(MYSQLI_ASSOC)) 
     { 
      foreach($colnames as $field) 
      { 
       $results[$field][] = $row[$field]; 
      } 
     } 
    } 

    //return to object 
    return $results; 

}