Предположим, у меня есть два массива, один из которых мне нужен, другой - массив, с которым я хочу протестировать.PHP - Зацикливание через смешанный массив
В массиве ключей, которые мне нужны, каждая клавиша может иметь значение, которое представляет собой массив ключей, которые мне нужны, и так далее.
Вот функция до сих пор:
static function keys_exist_in_array(Array $required_keys, Array $values_array, &$error)
{
foreach($required_keys as $key)
{
// Check required key is set in the values array
//
if (! isset($values_array[$key]))
{
// Required key is not set in the values array, set error and return
//
$error = new Error();
return false;
}
// Check the value is an array and perform function on its elements
//
if (is_array($values_array[$key]))
{
Static::keys_exist_in_array($required_keys[$key], $values_array[$key], $error);
}
return true;
}
}
Моя проблема заключается в том, что массив, который я хочу представить $required_keys
МОЖЕТ выглядеть следующим образом:
$required_keys = array(
‘key1’,
‘key2’,
‘key3’,
‘key4’ = array(
‘key1’,
‘key2’,
‘key3’ = array(
‘key1’
)
)
);
Очевидно, что проблема здесь заключается в том, что foreach
только находит каждый ключ, например 'Key4', а не значения без их собственного значения, например. 'Key1', 'key2', 'key3'.
Но если я пройду цикл со стандартным циклом, я получаю только значения, key1, key2, key3.
Что может быть лучше?
Благодаря
Когда цикл проверки, если значение является массивом, и если это так повторный вызов функции внутри цикла и передать значение (массив). – AbraCadaver
проверьте тип элемента, если это массив, запишите на этот элемент! – taesu
http://stackoverflow.com/questions/2648968/what-is-a-recursive-function-in-php – Capsule