Каждый элемент foreach будет обрабатывать объекты так же, как массивы.
Это должно сделать ...
foreach ($sku->price as $price) {
foreach ($price as $id => $amount) {
echo $id , ' ' , $amount , "\n";
}
}
Включите максимальные предупреждения компилятора (это -Wall
опция, если Вы используете компилятор Гну).
'Линт' является архитипичным инструментом статического анализа.
valgrind
хороший анализатор во время выполнения.
Я думаю, что у Вас должны быть некоторые лекции о хороших методах и почему они хороши. Это должно помочь Вам больше, чем инструмент анализа кода (в начале, по крайней мере).
Я предполагаю, что Вы читаете серию Эффективного C++ и ** Эффективные книги STL, по крайней мере. См. alsot Категорическое Книжное Руководство C++ и Список
Для g ++, а также включающий - Стена, включают - педантичный также и готовятся быть удивленным количеством проблем, которые это находит!
Поддержка инструмента C++ довольно плоха по сравнению с Java, C#, и т.д. потому что это не имеет контекстно-свободной грамматики. На самом деле существуют части грамматики C++, которые неразрешимы. В основном это означает, что понимание кода C++ на синтаксическом уровне требует реализации в значительной степени фронтэнд компилятора с семантическим анализом. C++ не может быть проанализирован в AST независимо от семантического анализа и большинство инструментов анализа кода в IDE, и т.д. работать на уровне AST. Это - часть компромисса, который Вы делаете в обмен на гибкость и назад совместимость C++.
линт - существует много версий, но если Вы гуглите для линта, необходимо найти тот, который работает. Другая вещь сделать, включают Ваши предупреждения компилятора - если Вы используете gcc/g ++, опция - Стена.
Вы могли бы найти CppChecker полезным как плагин для Eclipse, который поддерживает gcc/PC линт.
Включение всех предупреждений компилятора (по крайней мере первоначально) и затем понимание, что они имеют в виду, как решить выделенные проблемы и какое из предупреждений представляет подлинные конструкции, которые разработчики компилятора могли бы считать неоднозначным, являются хорошим первым шагом.
При необходимости в чем-то более мощном Вы могли бы попробовать Линт ПК, если Вы находитесь в Windows, который является все еще одним из лучших инструментов линта для C++. Просто имейте в виду, что необходимо будет настроить эти инструменты для отражения стиля кодирования, иначе Вы будете затопляться предупреждениями и не сможете видеть лес для деревьев. Да, это стоит денег, и это - вероятно, немного излишества, если Вы не делаете C++ на "том, чтобы быть оплаченным его" уровень, но я нахожу это неоценимым.
Существует как список статических инструментов анализа кода в Википедии.
Но предупреждения обычно хороши, но одной проблемой с включением всех предупреждений с педантичным и Стеной является количество предупреждений, которые Вы могли бы получить от включения заголовков, что Вы не имеете никакого контроля, это может создать много шума. Я предпочитаю компилировать свое собственное программное обеспечение со всеми включенными предупреждениями все же. Поскольку я программирую в Linux, мне обычно нравится это:
Поместите внешние заголовки, которые я должен включать в отдельный файл, и в начале того файла перед помещенным включением:
#pragma GCC system_header
И затем включайте этот файл из своего кода. Это позволяет Вам видеть все предупреждения из своего собственного кода без него являющийся утонувшим в предупреждениях из внешнего кода. Оборотная сторона - то, что это - gcc определенное решение, я не знаю ни о каком независимом от платформы решении этого.
Я думаю, что действительно, что необходимо изучить, вот то, как отладить за пределами IDE. Это - ценный навык, по-моему, так как Вы больше не будете требовать, чтобы такой тяжелый набор инструментов разработал программное обеспечение, и это будет относиться к подавляющему большинству языков, которые Вы уже знаете и будете когда-либо изучать.
Однако это - трудное для привыкания к. Необходимо будет написать код только для отладки целей, например, выписать чеки после каждой строки, еще не отлаженной, чтобы гарантировать, что результат как ожидалось, или распечатайте значения к консоли или в окнах сообщения так, чтобы можно было проверить их сами. Его утомительное, но позволит Вам взять на Ваших ошибках более легко, внутри или снаружи IDE.
Загрузите и попробуйте некоторые бесплатные средства отладки как GDB также, они могут помочь Вам зондировать память, и т.д., не имея необходимость писать Ваш собственный код.