@forwox

Как упростить функцию?

Доброго времени суток!
Помогите пожалуйста с решением задачи:
Как можно модернизировать эту функцию, что бы она могла обрабатывать бесконечное множество вложений массива?
Я понимаю что она должна вызывать сама себя, но как это реализовать не очень понятно.

function json_tree_tags($data) {
 foreach ($data as $key => $value) {
			if (is_array( $value)) { 
				foreach ($value as $key2 => $value2) {
						$result[$key.'_'.$key2] = $value2;
					if (is_array( $value2)) {
						  foreach ($value2 as $key3 => $value3) {
						  	$result[$key.'_'.$key2.'_'.$key3] = $value3 ;
						  		if (is_array( $value3)) {
						  			foreach ($value3 as $key4 => $value4) {
						  				$result[$key.'_'.$key2.'_'.$key3.'_'.$key4] = $value4;
						  			}
						  		}
						  }
					}
				}
			} else {
				$result[$key] = $value;
			}
		}
		return $result;
}
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
BoShurik
@BoShurik
Symfony developer
function json_tree_tags_recursive($data, &$result, $path = '')
{
    foreach ($data as $key => $value) {
        if ($path !== '') {
            $result[$path . $key] = $value;
        } elseif (!is_array($value)) {
            $result[$key] = $value;
        }
        if (is_array($value)) {
            json_tree_tags_recursive($value, $result, $path . $key . '_');
        }
    }
}
json_tree_tags_recursive($data, $result);
print_r($result);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
gaisindanil
@gaisindanil
web developer
Просто делаете обращение в цикле, к самому себе json_tree_tags(:array)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы