Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组键需要用引号括起来吗?_Php_Arrays_Syntax - Fatal编程技术网

PHP数组键需要用引号括起来吗?

PHP数组键需要用引号括起来吗?,php,arrays,syntax,Php,Arrays,Syntax,下面哪一个是正确的?第一个代码在$\u GET数组中没有引号,第二个有引号,我知道当它是一个文本字符串时应该有引号,但在本例中它是一个变量,如果键是一个数字呢 无报价 function arg_p($name, $default = null) { return (isset($_GET[$name])) ? $_GET[$name] : $default; } 引用 function arg_p($name, $default = null) { return (isset($_GE

下面哪一个是正确的?第一个代码在$\u GET数组中没有引号,第二个有引号,我知道当它是一个文本字符串时应该有引号,但在本例中它是一个变量,如果键是一个数字呢

无报价

function arg_p($name, $default = null) {
  return (isset($_GET[$name])) ? $_GET[$name] : $default;
}
引用

function arg_p($name, $default = null) {
  return (isset($_GET['$name'])) ? $_GET['$name'] : $default;
}

第一个将使用
$name
的值作为键,而第二个将使用文本字符串
'$name'
作为键。

第一个将使用
$name
的值作为键,而第二个将使用文本字符串
'$name'
作为键。

使用PHP,
$\u GET[“$name”]
$\u GET[$name]
是相同的,因为PHP将在双引号内计算变量。这将返回变量
$name
存储的任何内容的键

但是,
$\u GET['$name']
将搜索
$name
本身的键,而不是变量
$name
包含的任何内容

如果键是一个数字,
$\u GET[6]
$\u GET['6']
$\u GET['6']
在语法上都是相等的。

对于PHP,
$\u GET[“$name”]
$\u GET[$name]
是相同的,因为PHP将在双引号内计算变量。这将返回变量
$name
存储的任何内容的键

但是,
$\u GET['$name']
将搜索
$name
本身的键,而不是变量
$name
包含的任何内容

如果键是一个数字,
$\u GET[6]
$\u GET['6']
$\u GET[“6”]
在语法上都是相等的。

  • 如果键是一个变量

    $array[$key]

你不必引用它

  • 但如果它是文本字符串,则必须(如果不将其括在引号中,则它不是字符串)

    $array['myKey']

如果你这样做,你会收到通知的

$array[mykey];
  • 如果键是一个变量

    $array[$key]

你不必引用它

  • 但如果它是文本字符串,则必须(如果不将其括在引号中,则它不是字符串)

    $array['myKey']

如果你这样做,你会收到通知的

$array[mykey];

括号是
()
而不是
'
。后者是单引号或撇号。当你说括号()时,你指的是()还是括号[]?如果我没有完全困惑,或者你编辑了这篇文章,那么你的两个案例之间的唯一区别似乎是“$name”周围的单引号。Gumbo的答案是正确的。另外,我要指出,在这种情况下,没有单引号的版本几乎肯定是一个错误。无论$name的值是多少,它的行为都是一样的。另外,不要试图让您感到困惑,但是
$\u GET[“$name”]
实际上在大多数情况下都与没有引号的版本工作相同,但事实并非如此correct@kip:为什么这是一个错误?如果存在值为$name的$\u GET请求变量,则该函数将返回该变量,否则返回值为$default。第一个函数是正确的。括号是
()
,而不是
'
。后者是单引号或撇号。当你说括号()时,你指的是()还是括号[]?如果我没有完全困惑,或者你编辑了这篇文章,那么你的两个案例之间的唯一区别似乎是“$name”周围的单引号。Gumbo的答案是正确的。另外,我要指出,在这种情况下,没有单引号的版本几乎肯定是一个错误。无论$name的值是多少,它的行为都是一样的。另外,不要试图让您感到困惑,但是
$\u GET[“$name”]
实际上在大多数情况下都与没有引号的版本工作相同,但事实并非如此correct@kip:为什么这是一个错误?如果存在值为$name的$\u GET请求变量,则该函数将返回该变量,否则返回值为$default。第一个函数是正确的。@jasondavis:我想你指的是未知偏移量*/*未知索引通知。这是因为在尝试读取之前,您应该测试该项是否存在。一种方法是
isset
,另一种方法是
array\u key\u存在
@jasondavis:我想你指的是未知偏移量*/*未知索引通知。这是因为在尝试读取之前,您应该测试该项是否存在。一种方法是设置
isset
,另一种方法是存在
array\u key\u
。您不会得到$array[mykey]的错误。您只会收到一个PHP通知。查看更多信息。从
PHP7.2
您将获得PHP警告。
define('mykey','mykey')完成,无需注意$array[mykey]不会出现错误。您只会收到一个PHP通知。查看更多信息。从
PHP7.2
您将获得PHP警告。
define('mykey','mykey')完成,无通知