У меня есть столкновение сообщений, которые я хочу показать в таблице. Каждое сообщение имеет id и parent_id.php foreach в foreach
Я хочу, чтобы петля через стол с вложенным foreach, но я не получаю его на работу. Моя идея состоит в том, чтобы прокручивать каждое сообщение, печатать имя и прочее, а также находить все его дочерние элементы (путем циклического прохождения каждого сообщения и видеть, равен ли родительский идентификатор childs моему id.)
Мой код is:
$allPosts = $posts;
foreach ($posts as $post) {
if ($post->parent_id == 0){ //0 means highest level, no parent
echo $post->name;
$current_id = $post->id;
foreach ($allPosts as $childPost){
if($childPost->parent_id == $current_id){
echo $cihldPost->name;
}
}
}
}
Проблема в том, что первый цикл работает только один раз. Если я удалю второй цикл foreach, первый будет работать правильно.
Почему это происходит и как его решить?
ADDED: Само сообщение похоже на сообщение в блоге, оно содержит следующее: id, title, body, compact, parent_id. Где id - это уникальный идентификатор, заголовок и тело в качестве заголовка и тела для сообщения в блоге, компактное как краткое имя, используемое для URL-адреса, родительский идентификатор, указывающий, кому принадлежит сообщение, т.е. Я ребенок моего родителя.
Поскольку пользователь должен иметь возможность передвигаться по сообщениям и помещать сообщения в меню, подумайте о сообщениях верхнего уровня в качестве пунктов меню и о том, у кого есть родительский элемент подменю.
Что содержит '$ childPost',' $ allPosts'? Каково отношение? –
$ allPosts = $ posts, просто чтобы переменные были разными, хотя это одни и те же записи. childpost (который не должен быть childpost, если его parent_id == current_id), является просто именем сообщения, которое я получаю для каждого. Каждое сообщение содержит имя, id, parent_id, контент, URL-адрес и другие мелкие вещи. Подумайте об этом, как о блоге. Это имеет смысл? – Malin
@Malin, если вы разместите некоторый образец содержимого '$ posts;', нам будет легко понять вашу проблему. –