Цитирование через расширенные методы: неверный аргумент, предоставленный foreach()

108
8

Я пытаюсь выполнить различные варианты расширенных классов в родительском классе, но я продолжаю получать эту ошибку с помощью своего заявления foreach:

Предупреждение: неверный аргумент, предоставленный foreach()

Не знаете, почему это происходит, любая идея, что мне не хватает? Не знаю, почему $this->options() не распознается как массив... У меня есть аналогичная работа, но я думаю, что что-то просто стреляет прямо над моей головой:

class parent_class {
public function my_method() {
$options = $this->options();
foreach($options as $option) {
// ...
}
}

public function options() {
}
}

class child_one extends parent_class {
public function options() {
$options['name_one'] = array(
'type' => 'type_one',
'id' => 'id_one',
'name' => 'name_one'
);
return $options;
}
}

class child_two extends parent_class {
public function options() {
$options['name_two'] = array(
'type' => 'type_two',
'id' => 'id_two',
'name' => 'name_two'
);
return $options;
}
}

спросил(а) 2021-01-27T21:24:39+03:00 4 месяца, 4 недели назад
1
Решение
77

Предупреждение: неверный аргумент, предоставленный foreach()

говорит вам, что foreach ожидает, что массив, который должен быть предоставлен, является первым аргументом. Вы предоставляете ему $options = $this->options() и поскольку метод options() пуст, возвращаемое значение равно NULL поэтому значение $options = NULL.

Чтобы этого избежать, вы можете:

$options = $this->options();
if (is_array($options))
foreach($options as $option) {
// ...
}
}

ответил(а) 2021-01-27T21:24:39+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема