2014-11-17 2 views
-5

Я получаю сообщение об ошибке, выполнив следующий код:Почему разница в выходе с использованием SUPERGLOBAL в PHP?

<?php 
    //superglobal.php 

    foreach($_SERVER as $var=>$value) 
    { 
     echo $var=>$value.'<br />';  //this will result in to following error: 
                //Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ';' in 
                //C:\xampp\htdocs\w_j_gilmore\CH_03_PHP_BASICS\superglobal.php on line 6 
    } 
?> 

И следующий код работает успешно

<?php 
    //superglobal.php 

    foreach($_SERVER as $var=>$value) 
    { 
     echo "$var=>$value<br />"; 
    } 
?> 

Печати в одной цитате и двойная цитата разница. ПОЧЕМУ?

+0

есть. thats правильное поведение '$ var => $ value' должно возвращать ошибку синтаксического анализа, так как' => 'используется для пары ключей, используемой в массивах. ну это '' => ''просто трактуется как буквальные строки – Ghost

ответ

2

Разница между 2 заключается в том, что в первом случае вы пытаетесь использовать оператор => (который недействителен в этом месте, поэтому это приведет к синтаксической ошибке), а во втором вы печатаете строку, которая бывает, что у него есть символы = и >.

Второй эффективно можно переписать в виде:

<?php 
    //superglobal.php 

    foreach($_SERVER as $var=>$value) 
    { 
     echo $var . "=>" . $value . "<br />"; 
    } 
?> 

Если вы просто пытаетесь вывести $_SERVER для отладки причинам, я предлагаю использовать var_dump или print_r

var_dump($_SERVER); 
1

Вы не процитировал строку :

echo $var=>$value.'<br />'; 

quo ted будет выглядеть так:

echo '$var => $value <br />'; 

Если одинарные кавычки, переменные не интерпретируются.

Смежные вопросы