array_push() ожидает, что параметр 1 будет array, int задан


array_push() ожидает, что параметр 1 будет array, int задан

03.11.2020 09:57:40 Просмотров 7 Источник

Я получаю array_push() ожидаю, что параметр one будет массивом, любое решение?

$activeCourses = array();
foreach ($allCourses as $course) {
   if (strtotime($course->end_date) > time()) {
       $activeCourses = array_push($activeCourses, $course);
   }
}
У вопроса есть решение - Посмотреть?

Ответы - array_push() ожидает, что параметр 1 будет array, int задан / array_push() expects parameter 1 to be array, int given

Burhan Kashour

03.11.2020 09:58:48

Вы можете использовать [] более легко:

$activeCourses = array();
foreach ($allCourses as $course) {
   if (strtotime($course->end_date) > time()) {
     $activeCourses[] = $course;
     }
}
Является ответом!
zahid hasan emon

03.11.2020 10:05:59

вы впервые ссылаетесь на переменную как на массив. но когда вы используете его для push массива с $activeCourses = , он становится целочисленным полем, поскольку array_push возвращает целочисленное значение, а затем, когда дело доходит до следующего push массива на следующей итерации, ваша переменная activeCourses больше не является массивом. так как

$activeCourses = array();
foreach ($allCourses as $course) {
   if (strtotime($course->end_date) > time()) {
       array_push($activeCourses, $course);
   }
}

или

$activeCourses = array();
foreach ($allCourses as $course) {
   if (strtotime($course->end_date) > time()) {
       $activeCourses[] = $course;
   }
}
ariefbayu

03.11.2020 10:06:04

Это вызвано тем, что вы даете $activeCourses значение array_push(). array_push() возвращает значение int. Чтобы исправить это, просто обновите эту строку до не возвращаемого значения, так как параметр array_push() передается по ссылке:

$activeCourses = array_push($activeCourses, $course);

Изменил его на:

array_push($activeCourses, $course);
Помочь в развитии проекта:
Закрыть X