Я изучаю (ну, пытаюсь) ООП, и у меня есть один простой и, возможно, очень глупый вопрос. Мне нужно получить некоторые данные из очень «глубокого» массива. Если бы я должен был использовать процедурный подход, я бы объявить переменную, как это, просто ради удобства чтения:PHP - Пока/foreach в классе: застрял, не могу понять, что делать
foreach ($my_array as $single) {
$readable = $single['level_1']['level_2']['level_3']['something'];
}
И в то время как внутри этого Еогеасп, я мог бы использовать $readable
как мне нравится. Сейчас я пытаюсь построить класс, и мне нужно обработать тот же массив. Я был бы соблазн сделать что-то вроде этого, чтобы сделать вещи более ясно:
class MyClass {
protected $my_array = null;
protected function myCustomIncrement() {
return $readable++;
}
public function myCustomOutput() {
foreach ($this->my_array as $single) {
$readable = $single['level_1']['level_2']['level_3']['something'];
return $this->myCustomIncrement();
}
}
}
$test = new MyClass;
echo $test>myCustomOutput();
Но в то время как внутри myCustomIncrement()
как $readable
или $this->$readable
результат не определен. Вероятно, я пытаюсь сделать что-то действительно глупо, поэтому я хотел бы попросить о помощи: как я могу использовать foreach или сохранять чистый/удобочитаемый/поддерживаемый код? Или, может быть, я должен использовать другой подход?
Заранее благодарен!
Просто опоясывающий элемент, позаботьтесь о инструкции 'return' внутри цикла foreach. В текущем сценарии, как только оператор 'return' попадает, элемент управления возвращается к оператору вызывающей функции. Таким образом, ваш цикл foreach будет выполняться ** только один раз **. –
Спасибо! Я подумал о том, что в качестве параметра можно использовать $ readable, но я сделал это только для myCustomIncrement(). И спасибо вам большое за другие советы! – Cerere