What is the cause of error syntax, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING?



  • The code is as follows:

    <?php
        if (!isset ($_GET['login']))
        {
            <...>
        }
        else
        {
            echo "Активный пользователь:$_GET['login']"; // В чем причина ошибки, при попытке использовать $_GET['login']???
        }
        ?>
    

    It's removed if used

    $_GET[login] //Без кавычек
    

    or

     {$_GET['login']}
    

    or a concentration, but I want to know the reason for the error.



  • Thereags php

    Bug in php https://bugs.php.net/bug.php?id=16195 - when you work with variables. GET/POST They don't work as standard sets. And that's the problem.

    Bug https://bugs.php.net/bug.php?id=15498 - Maybe it's a problem because variables $_SERVER["QUERY_STRING"] and $_SERVER["HTTP_RAW_POST_DATA"] contains variables GET and POST data, respectively.

    Bug https://bugs.php.net/bug.php?id=10502 - the problem, too. POST values

    Better use for reproduction Complex (figurous) syntaxis


    Complex (figurous) syntaxis

    It's called complicated, not because it's hard to understand, but because it allows for the use of complicated expressions.

    Any scalular variable, mass element or characteristic of the object displayed in the row may be presented in the row by this syntax. Just write the phrase just like you did outside the line and then put it in. { and }

    Since { Can't be screened, this syntax will be recognized only when $ direct {

    Use it. {\$to print {$

    Comment:Attempt to access variables of other types (excluding masses or objects using certain interfaces) [] or {} He'll come back. NULL

    http://php.net/manual/ru/language.types.string.php#language.types.string.syntax.nowdoc

    <?php
    // Показываем все ошибки
    error_reporting(E_ALL);
    

    $great = 'здорово';

    // Не работает, выводит: Это { здорово}
    echo "Это { $great}";

    // Работает, выводит: Это здорово
    echo "Это {$great}";
    echo "Это ${great}";

    // Работает
    echo "Этот квадрат шириной {$square->width}00 сантиметров.";

    // Работает, ключи, заключенные в кавычки, работают только с синтаксисом фигурных скобок
    echo "Это работает: {$arr['key']}";

    // Работает
    echo "Это работает: {$arr[4][3]}";

    // Это неверно по той же причине, что и $foo[bar] вне
    // строки. Другими словами, это по-прежнему будет работать,
    // но поскольку PHP сначала ищет константу foo, это вызовет
    // ошибку уровня E_NOTICE (неопределенная константа).
    echo "Это неправильно: {$arr[foo][3]}";

    // Работает. При использовании многомерных массивов внутри
    // строк всегда используйте фигурные скобки
    echo "Это работает: {$arr['foo'][3]}";

    // Работает.
    echo "Это работает: " . $arr['foo'][3];

    echo "Это тоже работает: {$obj->values[3]->name}";

    echo "Это значение переменной по имени $name: {${$name}}";

    echo "Это значение переменной по имени, которое возвращает функция getName(): {${getName()}}";

    echo "Это значение переменной по имени, которое возвращает $object->getName(): {${$object->getName()}}";

    // Не работает, выводит: Это то, что возвращает getName(): {getName()}
    echo "Это то, что возвращает getName(): {getName()}";
    ?>


Log in to reply
 


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2