Я только что узнал о парах ключ / значение.
Я попытался найти существующий ответ и попытался понять, что я мог о парах ключ / значение и ассоциативных массивах.Хотя это становится слишком трудоемким.
У меня проблемы с выяснением, как перебирать этот многомерный ассоциативный массив без ошибок.
$arr = array(
'test1' => array(
'testing 1-1' => array('testing 1-1-1', 'testing 1-1-2', 'testing 1-1-3'),
'testing 1-2' => array('testing 1-2-1', 'testing 1-2-2', 'testing 1-2-3'),
'testing 1-3' => array('testing 1-3-1', 'testing 1-3-2', 'testing 1-3-3')),
'test2' => array(
'testing 2-1' => array('testing 2-1-1', 'testing 2-1-2', 'testing 2-1-3'),
'testing 2-2' => array('testing 2-2-1', 'testing 2-2-2', 'testing 2-2-3'),
'testing 2-3' => array('testing 2-3-1', 'testing 2-3-2', 'testing 2-3-3')),
'test3' => array(
'testing 3-1' => array('testing 3-1-1', 'testing 3-1-2', 'testing 3-1-3'),
'testing 3-2' => array('testing 3-2-1', 'testing 3-2-2', 'testing 3-2-3'),
'testing 3-3' => array('testing 3-3-1', 'testing 3-3-2', 'testing 3-3-3')));
Так что я знаюprint_r отлично справляется с работой, отрисовывая весь массив, но я пытаюсь добиться возможности получить все возможные ключи и значения.
Я пытаюсь отобразить все строки 1 на 1 через циклы foreach, но этоКажется, что само слово массив вызывает ошибку как-то.Я считаю, что это мой самый логичный подход к этому.
foreach ($arr as $test) {
echo $test . '<br>';
foreach ($test as $testing1) {
echo '  ' . $testing1 . '<br>';
foreach ($testing1 as $testing2) {
echo '    ' . $testing2 . '<br>';
}
}
}
Хотя это приведет к следующему:
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 88
Array
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 1-1-1
testing 1-1-2
testing 1-1-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 1-2-1
testing 1-2-2
testing 1-2-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 1-3-1
testing 1-3-2
testing 1-3-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 88
Array
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 2-1-1
testing 2-1-2
testing 2-1-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 2-2-1
testing 2-2-2
testing 2-2-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 2-3-1
testing 2-3-2
testing 2-3-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 88
Array
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 3-1-1
testing 3-1-2
testing 3-1-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 3-2-1
testing 3-2-2
testing 3-2-3
Notice: Array to string conversion in /opt/lampp/htdocs/projects/form/phptest.php on line 90
Array
testing 3-3-1
testing 3-3-2
testing 3-3-3
Так что я хотел бы знать, есть ли что-то, что яотсутствует или это невозможно сделать?
ОБНОВЛЕНИЕ: Спасибо за ответы.
Это код, который я использовал на основе полученных ответов:
foreach ($arr as $k => $test) {
echo $k . '<br>';
foreach ($test as $k1 => $testing1) {
echo '  ' . $k1 . '<br>';
foreach ($testing1 as $k2 => $testing2) {
echo '    ' . $testing2 . '<br>';
}
}
}
ОБНОВЛЕНИЕ:
Мне действительно нравится предложение HoldOffHunger.
<?php
// Your Array Here
$arr = [...];
// IterateArray() function
function IterateArray($data) {
if(is_array($data)) {
foreach ($data as $data_key => $data_value) {
print("\n\n");
print($data_key . ' :: ');
print(IterateArray($data_value));
}
} else {
print($data);
print("\n");
}
}
// Call IterateArray()
IterateArray($arr);
?>
К сожалению, я не использовал эту рекурсивную функцию.Жесткое кодирование каждого экземпляра цикла позволяет мне делать разные вещи для каждого цикла вложенности.Хотя (и поправьте меня, если я ошибаюсь), это будет полезно, если каждое измерение многомерного массива будет повторять один и тот же код.