Вы можете использовать is_array
, чтобы проверить, является ли что-то массивом, и / или вы можете использовать is_object
, чтобы проверить, может ли оно использоваться в foreach
:
foreach ($arr as $val)
{
if (is_array($val) || is_object($val))
{
foreach ($val as $subval)
{
echo $subval;
}
}
else
{
echo $val;
}
}
Другой альтернативой является использование RecursiveIteratorIterator
:
$it = new RecursiveIteratorIterator(
new RecursiveArrayIterator($arr),
RecursiveIteratorIterator::SELF_FIRST);
foreach($it as $value)
{
# ... (each value)
}
Рекурсивный итератор работает для нескольких уровней в глубину.