Я провел поиск и не нашел ни одной записи, которая бы полностью отвечала на мой вопрос.
У меня есть массив PHP, сгенерированный ради аргумента, с помощью этого кода:
$i = 5;
for($i = 0; $i < $j; $i++) {
$multiArray[0][$i] = $i;
$multiArray[1][$i] = $i;
}
Когда я пытаюсь получить к нему доступ с помощью:
for($i = 0; $i < $j; $i++) {
echo "$multiArray[0][$i]";
echo "$multiArray[1][$i]";
}
Я получил:
Примечание: преобразование массива в строку в строке 3
Примечание: преобразование массива в строку в строке 4
…x4
Когда я заменяю echo
с printf("%d", $multiArray[0][$i])
тогда он печатает нормально. Почему я должен явно сказать PHP, что я запрашиваю int, когда элемент, к которому я обращаюсь, явно является int (и PHP знает это через var_dump()
)? Я не получаю доступ к массиву, но элемент в массив.
Спасибо
Простая двойная кавычка поддерживает до один вложенный элемент. Другими словами, "foo[0][1]"
интерпретируется как "{$foo[0]}[1]"
, Это означает, что он пытается интерпретировать массив $foo[0]
в качестве строки в этой точке, чтобы интерполировать его в строку.
Но использование здесь кавычек совершенно бессмысленно. Вы не хотите интерполяции строк, вы просто хотите вывести значение переменной:
echo $multiArray[0][$i];
просто попробуйте это:
for($i = 0; $i < $j; $i++) {
echo $multiArray[0][$i];
echo $multiArray[1][$i];
}
Ваш код разбирает строку, а не массив, попробуйте удалить кавычки. Квадратные скобки [] после массива рассматриваются как строка, а не как параметр. Используйте приведенный ниже код.
<?php
$j = 5;
for($i = 0; $i < $j; $i++) {
$multiArray[0][$i] = $i;
$multiArray[1][$i] = $i;
}
for($i = 0; $i < $j; $i++) {
echo $multiArray[1][$i];
}
Надеюсь, это поможет вам