2015-04-04 3 views
-3

Мне нужен авторитетный ответ на этот вопрос, или вы можете сказать мой запрос.Обязательно использовать кавычки (одинарные кавычки и двойные кавычки) вокруг индекса при доступе к элементам массива в PHP?

Давайте посмотрим на следующие три фрагменты кода:

Первое:

<!DOCTYPE html> 
<html> 
    <body> 

    <?php 
     $x = 5; 
     $y = 10; 

     function myTest() { 
     $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; 
     } 

     myTest(); 
     echo $y; 
    ?> 

    </body> 
</html> 

Второе:

<!DOCTYPE html> 
<html> 
    <body> 

    <?php 
     $x = 5; 
     $y = 10; 

     function myTest() { 
     $GLOBALS["y"] = $GLOBALS["x"] + $GLOBALS["y"]; 
     } 

     myTest(); 
     echo $y; 
    ?> 

    </body> 
</html> 

Третье:

<!DOCTYPE html> 
<html> 
    <body> 

    <?php 
     $x = 5; 
     $y = 10; 

     function myTest() { 
     $GLOBALS[y] = $GLOBALS[x] + $GLOBALS[y]; 
     } 

     myTest(); 
     echo $y; 
    ?> 

    </body> 
</html> 

Для каждого из приведенных выше фрагментов кода я получил тот же результат в своем браузере .

Если Вы заметили выше три фрагменты кода тесно, вы найдете следующие три различных утверждений:

//From First Code Snippet. Here I've used single quotes around the array index. 
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; 

//From Second Code Snippet. Here I've used double quotes around the array index. 
$GLOBALS["y"] = $GLOBALS["x"] + $GLOBALS["y"]; 

//From Third Code Snippet. Here I've not used any kind of quotes around the array index. 
$GLOBALS[y] = $GLOBALS[x] + $GLOBALS[y]; 

Итак, мои сомнения заключаются в следующем:

  • Обязательно ли использовать кавычки вокруг индекса массива при доступе к определенному элементу массива?
  • Если да, то какой тип котировок я имею в виду одинарные кавычки или двойные кавычки?
  • Я не использовал какие-либо кавычки в своем последнем фрагменте кода, хотя получил тот же результат. Означает ли это, что использование кавычек при доступе к элементам массива не является обязательным?
  • Или это специальный случай, который действителен только для массива $GLOBALS?
+1

Первые две строки, последние являются константами. Действуют нормальные правила. Здесь ничего особенного. Просто прочитайте [руководство] (http://php.net/manual/en/language.types.array.php), в котором объясняется * именно то, что вы ищете. Смотрите, где говорится, что делают и не делают. –

+0

@JohnConde: Я не определил и не использовал константы в моем коде. – user2839497

+1

Используйте одиночные или двойные кавычки. Если вы не используете их, он все равно будет работать в этом случае, поскольку PHP будет искать определенную константу с этим именем, и если он ничего не найдет, он вернется к строке. Однако вы должны получать уведомление в своих журналах ошибок. –

ответ

2

В PHP одиночные и двойные кавычки ведут себя почти одинаково. Единственное исключение состоит в том, что двойные кавычки позволяют экранировать.

$GLOBALS["y"] и $GLOBALS['y'] в этом сценарии.

$GLOBALS[y] может работать, но проблематично. y ссылки на постоянную переменную, называемую y. Если у вас его нет, он анализируется как строка, поэтому работает так, как показано выше.

Что касается ваших вопросов

Но это на самом деле не так, и вы должны использовать кавычки!

Обязательно ли использовать кавычки вокруг индекса массива при доступе к определенному элементу массива?

Абсолютно.

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

Как я уже сказал, вы можете использовать либо. Я лично предпочитаю сингл ('), но это зависит от вас.

Я не использовал какие-либо кавычки в своем последнем фрагменте кода, хотя получил тот же результат. Означает ли это, что использование кавычек при доступе к элементам массива не является обязательным?

См. Ответ на вопрос № 1.

Или это специальный случай, который действителен только для массива $ GLOBALS?

Это скорее интерпретируется как постоянная переменной, определенной как const y = '...';

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