Возможный сценарий
Я не могу найти, где мой код поступил не так. Вот моя полная ошибка:
Ошибка анализа: ошибка синтаксиса, неожиданный T_VARIABLE в строке x
Что я пытаюсь
$sql = 'SELECT * FROM dealer WHERE id="'$id.'"';
Ответ
Ошибка анализа: проблема с синтаксисом вашей программы, например, оставляя точку с запятой от конца инструкции или, как и в случае выше, пропускает оператор
.
.Простыми словами это синтаксическая ошибка, означающая, что в вашем коде есть что-то, что помешает правильному анализу и поэтому работает.
Что вам нужно сделать, так это внимательно проверить строки, где ошибка для любых простых ошибок.
Это сообщение об ошибке означает, что в строке x файла интерпретатор PHP ожидал увидеть открытую круглую скобку, но вместо этого он встретил нечто, называемое
T_VARIABLE
. Эта вещьT_VARIABLE
называетсяtoken
. Это способ интерпретации PHP-интерпретатора различных фундаментальных частей программ. Когда интерпретатор читает в программе, он переводит то, что вы написали, в список токенов. Где бы вы ни разместили переменную в своей программе, в списке интерпретатора есть токенT_VARIABLE
.Хорошо читается: Список токенов парсера
So убедитесь, что вы включили хотя бы
E_PARSE
в своемphp.ini
. Ошибки анализа не должны существовать в производственных сценариях.Я всегда рекомендовал добавить следующий оператор при кодировании:
error_reporting(E_ALL);
Также неплохо использовать среду IDE, которая позволит вам знать ошибки разбора при наборе текста. Вы можете использовать:
- NetBeans (прекрасный мир красоты, бесплатное программное обеспечение) (лучший, на мой взгляд)
- PhpStorm (дядя Гордон любит это: P, платный план, содержит проприетарное и бесплатное программное обеспечение)
- Eclipse (красота и зверь, бесплатное программное обеспечение)
Вопросы, относящиеся:
Все в JavaScript - объект. В случае Array
, length
свойство возвращает размер области внутренней памяти для индексируемых объектов массива. Часть беспорядка может играть роль в этом []
работы оператора и для числовых и для аргументов строки. Для массива при использовании его с числовым индексом это возвращается/устанавливает ожидаемый индексируемый объект. При использовании его со строкой это возвращается/устанавливает именованное свойство на объекте массива - если строка не соответствует числовому значению, то это возвращает индексируемый объект. Это вызвано тем, что в JavaScript индексы массива принуждены к строкам неявным toString()
вызов. Откровенно говоря, это - просто еще одна из тех вещей, которая заставляет Вас поцарапать голову и сказать "JavaScript, это, это - то, почему они смеются над Вами".
фактическое базовое представление может отличаться между браузерами (или оно не может). Я ни на что не полагался бы кроме интерфейса, который предоставляется при работе с ним.
можно узнать больше о массивах JavaScript в MDN.
Добавить к ответу tvanfosson: В ECMA-262 (3,0 спецификации, я верю), массивы просто определяются как имеющий это поведение для установки свойств (См. 15.4.5.1). Нет никакого общего механизма, лежащего в основе его (по крайней мере, на данный момент) - это, как это определяется, и как интерпретаторы JavaScript должны вести себя.
Важно знать, что, когда Вы делаете sup['look'] = 4;
, Вы не используете ассоциативный массив, а скорее изменяете свойства на объектном глотке. Это эквивалентно sup.look = 4;
, так как можно динамично добавить свойства на объектах JavaScript в любое время. sup['length']
был бы для экземпляра производить 5 в Вашем первом примере.
Если Вы намереваетесь реализовать объекты с подобным массиву доступом, Массив, Mozilla dev центральная статья является большим ресурсом. К сожалению, я не знаю подробно детали реализации Массива, но существует много деталей в той статье.
Array
объект наследовался caller
, constructor
, length
, и name
свойства от Function.prototype
.