#php #arrays #filter
Вопрос:
У меня есть массив ниже, и я хочу изменить выход на основе некоторых условий
foreach($courses as $c) {
$c->type == "fulltime" ? 'full' : 'part';
$f = new stdClass();
$f->course_id = $c->course;
$f->form = $c->id;
$f->module = $c->module;
$f->unread = $unreadcount;
$f->type = $c->type;
$f->posts = $posts;
$results[$c->course_id][$c->type][] = $f;
}
текущая структура:
[course_id]{
full : [
$f->form = $c->id;
$f->module = $c->module;
$f->type = $c->type; [ex: fulltime, parttime]
]
part : []
posts : []
}
Условия :
if ($enableFulltimeCourse =1 amp;amp; $unreadcount >0)
-> показать полностью[] и часть [], иначе она пуста > if ($enableParttimeCourse =1 amp;amp; $f->type == "part")
-> показать часть [], иначе она пуста
Что я пытался
if ($enableFulltimeCourse =1 amp;amp; $unreadcount >0){
unset($f);
}
$results[$forum->course][$forum->type][] = $f;
пожалуйста, посоветуйтесь
Комментарии:
1. не могли бы вы объяснить немного подробнее
2. Данные о курсах @Jerson $содержат результаты очных и частичных курсов и непрочитанные элементы в зависимости от типа курса. через мой интерфейс я получаю значения, и мне нужно подготовить массив на основе этих условий. Пример: $enableFulltimeCourse имеет значение, а непрочитанные списки не равны 0, тогда я хочу показать вложенные массивы статей и сообщений на полный рабочий день. в остальном эти вложенные массивы должны быть пустыми. Я попытался сбросить($f) в зависимости от условий, но это не сработало.
3. @NicoHaase if ($enableFulltimeCourse =1 amp;amp; $unreadcount >0) { сбросить($f);} Я пробовал так, но это не сработало. он возвращает значение null для каждого элемента.
4. Почему вы используете
unset
для этого? Почему бы не использоватьarray_filter
?
Ответ №1:
Вам нужно использовать ==
или ===
для сравнения. Кроме того, не уверен, что вы имели в виду, говоря «показать X», иначе оно пустое, но вот как сформировать ваше условие. Я не думаю, что вы имели в виду unset($f);
— так как это приведет к удалению всего вашего объекта.
if ($enableFulltimeCourse == 1)
if ($unreadcount >0){
// show full[] and part[] else its empty
foreach($f->full as $item) {
// loop through the full
}
foreach($f->part as $item) {
// loop through the part
}
} else if ($f->type == "part") {
unset($f->full); //show part[] else its empty
foreach($f->part as $item) {
// loop through the part
}
}
}
$results[$forum->course][$forum->type][] = $f;
Комментарии:
1. @dilzdilz — — Это помогло решить ваш вопрос? Если да, пожалуйста, примите в качестве ответа. Спасибо