как вы уже догадались, я новичок в php, поэтому, пожалуйста, потерпите меня.
В данный момент я пишу сценарии на стороне сервера, и в то время как я занимался этим, одна конкретная вещь беспокоит меня в последнее время. Ситуация следующая. У меня есть два массива: один с элементами, а другой с ключами (индексами) для элементов первого массива. Что меня беспокоит, так это когда я пытаюсь вывести элемент через переменные двойного массива в строке:
echo "$elements[$index[0]]";
Я получил «Ошибка разбора: синтаксическая ошибка, неожиданное ‘[‘, ожидаемое ‘]’ в C: \ xampp \ htdocs \ test1.php в строке 5«ошибка. Однако, если используется только один массив, как в:
echo "$elements[0]";
Работает просто отлично (выводит а).
Я искал форумы и нашел небольшую помощь с этим. Также прочитайте В чем разница между одинарными и двойными кавычками в PHP? играл с одинарными и двойными цитатами, но с небольшим успехом.
Обходной путь, который я использую в данный момент, заключается в том, что я сохраняю значение из $index
массив в переменную и использовать его в качестве индекса в $elements
массив:
$key = $index[0];
echo "$elements[$key]";
Работает нормально, автобус ощущается как уровень косвенности.
Код:
<?php
$elements = ["a", "b", "c"];
$index = [2 , 1 , 0];
echo "$elements[$index[0]]";
?>
Ошибка:
Ошибка разбора: синтаксическая ошибка, неожиданный ‘[‘, ожидающий ‘]’ в
C: \ xampp \ htdocs \ test1.php в строке 5
Спасибо всем, кто уделил время, чтобы прочитать и ответить на это.
РЕДАКТИРОВАТЬ:
Спасибо всем за быстрые ответы.
Теперь я вижу, что был слишком наивен, думая, что смогу смоделировать свою конкретную проблему на простом примере.
Фактический код, с которым я имею дело:
mysql_query( "INSERT INTO pics (filename, date) VALUES( $dirArray[$keys[$index]] , $timestamp )" )
or die(mysql_error());
Ошибка:
Parse error: syntax error, unexpected '[', expecting ']' in C:\xampp\htdocs\dbsetup.php on line 47
Ирония также сильна, поскольку я создал уровень косвенности своим вопросом, пытаясь решить уровень косвенности в коде 🙂
Если вы просто выводите переменную, вам не нужно использовать кавычки в PHP:
echo $elements[$index[0]];
Если вы хотите добавить простой текст, вам нужно использовать кавычки:
echo "element at index 0: " . $elements[$index[0]] . "\n";
В зависимости от используемой версии PHP вы также можете столкнуться с ошибкой при использовании [ ... ]
как конструктор массива; в PHP 5.3 и более ранних версиях массивы должны быть объявлены с использованием синтаксиса
$fruits = array('apple', 'orange', 'banana');
тогда как в PHP 5.4 и выше, вы можете использовать сокращение
$fruits = ['apple', 'orange', 'banana'];
Существует гораздо больше информации о массивах в Документация по массиву PHP.
Вам нужно исправить свой PHP-скрипт с помощью этого кода:
$elements = array("a", "b", "c");
$index = array(2 , 1 , 0);
echo $elements[$index[0]];
Вы не создаете массив, поэтому вы получаете ошибку, а также не печатаете массив должным образом, поэтому измените свой код
$elements = array("a", "b", "c");
$index = array(2 , 1 , 0);
echo $elements[0];
echo $index[0];
echo $elements[$index[0]];
Вы не должны использовать команду echo в сочетании с переменной массива, если вы используете «» вместо круглых скобок (). Присвойте конструкцию массива временной переменной перед тем, как ее отобразить.
<?php
$elements = ["a", "b", "c"];
$index = [2 , 1 , 0];
$value = $elements[$index[0]];
echo "$value";
?>