2017-08-06 81 views
0

如何迭代數組通過PHP函數返回的對象來檢索記錄集的所有記錄?函數作爲數組返回時迭代整個記錄集

試圖讓這段代碼返回一個包含所有行

// @param group_id @returns result rows of all post from group with the corresponding ID 

     function getGroupPostItem($group_id){ 

     $sql_query = mysql_query("SELECT * FROM posts WHERE gid = '$group_id'"); 
    while($rows = mysql_fetch_assoc($sql_query)) { 



$record_set = array('gid' => $rows['gid'], 
        'pid' => $rows['pid'], 
        'post' => $rows['post'], 
        'filemap_id' => $rows['filemap_id']); 


return $record_set; 



     } 
      } 

嘗試使用下面的代碼打印所有從該查詢匹配的數據庫中的行記錄的數組,但所有它確實是只打印一行。

$arr = getGroupPostItem('6'); 
echo $arr['post']. '<br/>' ; 

回答

0

你應該只能夠改變這一行:

$record_set = array('gid' => $rows['gid'], 

...這樣的:

$record_set[] = array('gid' => $rows['gid'], 

編輯:另外,在保羅T中的評論指出, return $record_set;應位於while循環之外。

注意:echo $arr['post'] . '<br/>';本身不會顯示單個值,因爲它現在是一個數組。相反,它必須通過for或foreach循環。例如:

foreach ($arr as $val) { 
    echo $val['post'] . '<br/>'; 
} 

...或:

for ($i = 0; $i < count($arr); $i++) { 
    // Optional, if you want the loop to stop at the 0th value 
    if ($i == 0) { 
    echo $arr[$i]['post'] . '<br/>'; 
    } 
} 
+1

...和'$回報record_set;'應該是while循環外? –

+0

剛剛試過,沒有工作 – Maxwell

+0

一直在拋出一個未定義的索引錯誤!不工作 – Maxwell