[英]PHP: How do I run foreach loop on every foreach result?
我從我的數據庫中提取內容並使用foreach循環運行它。 我拉的每個項目都有一個帶有ID的列,以及一個帶有PARRENT ID的列(以及其他列)。 首先,我拉出我的PARRENT ID列等於0的所有行,並通過我的foreach循環輸出它們,但是對於我得到的每個結果,我想運行一個新查詢來檢查PARRENT ID等於其ID的行。 對於我來到這里的每一個結果,我想一次又一次地做同樣的事情,因為它可能會找到盡可能多的結果(這可能會永遠持續下去)。
讓我試着想象一下這個
ID = 1, PARRENT ID = 0 ID = 2, PARRENT ID = 0 ID = 3, PARRENT ID = 0 ID = 4, PARRENT ID = 3 ID = 5, PARRENT ID = 3 ID = 6, PARRENT ID = 5 ID = 7, PARRENT ID = 3 ID = 8, PARRENT ID = 3 ID = 9, PARRENT ID = 0 ID = 10, PARRENT ID = 0 ID = 11, PARRENT ID = 10 ID = 12, PARRENT ID = 11 ID = 13, PARRENT ID = 12 ID = 14, PARRENT ID 13
我該怎么做?
您可以創建一個只返回具有特定父ID的所有行的函數。 然后創建一個遞歸函數,打印出結果集和每個元素的所有子元素。 這是一些快速偽代碼:
function getRowsForParentId($id){
//build query with "WHERE parent = id", fetch all rows and return them
...
return $rows;
}
function printResults($results, $level = 1){
//loop over every result
foreach($results as $row){
//print an indented representation of that row
echo sprintf("%sid: %s, parent: %s", str_repeat(" ", $level), $row->id, $row->parentId);
//print out all childs one level deeper
printResults(getRowsForParentId($row->id), $level++);
}
}
$allRows = getRowsForParentId(0);//fetch all rows from db where parent = 0
printResults($allRows);
這應該做你想要的。
還要查看在mysql中存儲分層數據,因為這是你在這里所做的。
我自己想出了一個解決方案,就像我想要的那樣,但老實說我不知道是不是很糟糕的做法,但我對編程很新。
我做了一個函數,我可以傳入一個值。 在此函數中,我選擇PARRENT ID等於我的輸入值的所有行。 然后我有一個foreach循環,在其中我獲得了earch行的ID。 在這個foreach循環中,我傳遞函數,並傳遞ID作為值。
function get_parrents($input) {
$sql = "SELECT * FROM table WHERE parrent_id = '" . $input . "'";
$result = mysqli_query($conn, $sql);
foreach($result as $item) {
$new_item = $item['id'];
get_parrents($new_item);
};
};
$ a = 0;
catch_replies($ A);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.