2013-08-26 44 views
0

我在PHP中有遞歸函數的問題。我調用函數並從數據庫中獲取行,而不是將行放入數組,然後再次調用函數以獲取其他行,這些行與行相連...問題是,array_unshift只保存第一行,而不保存其他行。問題是什麼。謝謝您的回答。PHP mysql遞歸函數array_unshift

public static function nahrejZpravy($responseTable, $responseId){ 
    $return = Array(); 
    $query = "SELECT * FROM Zpravy WHERE responseTable = '$responseTable' AND responseId = '$responseId'"; 
    $result = query($query); 
    while($row = mysql_fetch_assoc($result)){ 
     array_unshift($return, $row); 
     Zpravy::nahrejZpravy('Zpravy', $row['id']); 
    } 
    return $return; 
} 
+1

您應該添加PHP標籤以獲得更多幫助 – djheru

+0

爲什麼你需要的是,在結束你想要一個數組中的所有信息?你不能只是'while($ row = ....){$ rows [] = $ row} return $ rows'。在你的場合,你想迭代每次在where子句中添加下一個id,直到按id選擇所有行,這對我來說完全意味着你可以擺脫它? –

+0

爲什麼?我有Zpravy數據庫表。在這裏,我有一些文字...並定義了,如果在此消息之前有哪條消息。因此,我從數據庫中獲取數據以獲得消息,並且比之前我將它們作爲消息的數據要比將其全部保存到數組中,並且在View中我要通過數組並寫入消息。 –

回答

1

你真需要的是這樣的:

<?php 

function getResponsesRecursive($responseTable, $responseId) { 
    $responses = array(); 
    $query = "SELECT * FROM Zpravy WHERE responseTable = '$responseTable' AND responseId = '$responseId'"; 
    $result = query($query); 
    while ($row = mysql_fetch_assoc($result)) { 
     $row['responses'] = getResponsesRecursive($row['table'], $row['id']); 
     $responses[] = $row; 
    } 
    return $responses; 
} 

的exaple:

$myArr = getResponsesRecursive('table', 0); 

$myArr = arrary(
    array(
     'id' => 1, 
     'table' => 'table-name', 
     'responses' => array(
      ... 
     ) 
    ) 
); 
1
<?php 

function getResponsesRecursive($responseTable, $responseId) { 
    $responses = array(); 
    $query = "SELECT * FROM Zpravy WHERE responseTable = '$responseTable' AND responseId = '$responseId'"; 
    $result = mysql_query($query); 
    while ($row = mysql_fetch_assoc($result)) { 
     $row['responses'] = getResponsesRecursive($row['table'], $row['id']); 
     $responses[] = $row; 
    } 
    return $responses; 
} 
?>