@ichubinets

Как рекурсивно очистить массив?

Имеем такой массив:

Array ( [chat_id] => 317373696 [text] => test [reply_markup] => {"inline_keyboard":[[{"text":"category","url":null,"login_url":null,"callback_data":"test2","switch_inline_query":null,"switch_inline_query_current_chat":null,"callback_game":null,"pay":null},{"text":"category 2","url":null,"login_url":null,"callback_data":"test3","switch_inline_query":null,"switch_inline_query_current_chat":null,"callback_game":null,"pay":null}]]} )

Нужно из него удалить все пустые элементы, при этом ключ reply_markup строка закодирована в json в которой тоже нужно почистить.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
@ichubinets Автор вопроса
Решено.

function isJson($string) 
{
	return is_string($string) && is_array(json_decode($string, true)) ? true : false;
}

function array_clear($array)
{
	foreach ($array as $k => $v) 
	{
		if (is_array($v))
		{
			$array[$k] = array_clear($array[$k]);
		}
		elseif (isJson($v))
		{
			$array[$k] = json_encode(array_clear(json_decode($v, 1)));
		}
		elseif (empty($v)) 
		{
			unset($array[$k]);
		}
	}

	return $array;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы