Я хочу авторитетный ответ на этот вопрос или вы можете сказать мой запрос.
Давайте посмотрим на следующие три фрагмента кода:
Первый :
<!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>
Для каждого из приведенных выше фрагментов кода я получил одинаковый результат в своем браузере 15.
Если вы внимательно ознакомились с тремя приведенными выше фрагментами кода, вы найдете три следующих утверждения:
//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
массив?В PHP одинарные и двойные кавычки ведут себя почти одинаково. Единственным исключением является то, что двойные кавычки позволяют экранировать.
$GLOBALS["y"]
а также $GLOBALS['y']
то же самое в этом сценарии.
$GLOBALS[y]
может работать, но проблематично. y
ссылки на постоянную переменную под названием y
, Если у вас его нет, он анализируется как строка, таким образом, работает как выше.
Но это на самом деле неправильно, и вы должны использовать кавычки!
Обязательно ли использовать кавычки вокруг индекса массива при доступе к конкретному элементу массива?
Абсолютно.
Если да, то какой тип кавычек, я имею в виду одинарные кавычки или двойные кавычки?
Как я уже сказал, вы можете использовать либо. Лично я предпочитаю сингл ('
), но это зависит от вас.
Я не использовал никаких цитат в своем последнем фрагменте кода, хотя получил тот же результат. Означает ли это, что использование кавычек при доступе к элементам массива не обязательно?
Смотрите ответ на вопрос № 1.
Или это особый случай, который действителен только для массива $ GLOBALS?
Это скорее интерпретируется как постоянная переменная, определенная как const y = '...';
Других решений пока нет …