我有:
$request = Array
(
[ID] => 2264
[SUCCESS] => Array
(
[0] => Array
(
[MESSAGE] => Service Details
[LIST] => Array
(
[retail_name] =>
[credit_admin] => FREE
[credit] => 0
[discount_admin] => 0
[discount] => 0
[cartdiscount] => 0
如果我这样做:
echo $request[ID]; // it says: 2264
echo $request[SUCCESS]; // it says: Array
echo $request[SUCCESS][0][MESSAGE]; // it says: Service Details
但我需要回应"信用"如果我这样做:
echo $request[SUCCESS][0][LIST]; // I get ERROR
echo $request[SUCCESS][0][LIST][credit]; // I get ERROR
我不明白为什么?我该怎么做? 谢谢
答案 0 :(得分:0)
您没有使用引号来指定数组键。您应该使用['ID']
代替[ID]
PHP为您修复此问题并假设您的意思是['ID']
而不是[ID]
并在日志中添加通知
这对[LIST]
不起作用,但因为LIST
是保留关键字。这意味着list
在PHP中有一个函数。 PHP不知道你需要哪一个并且不返回结果。
将[LIST]
更改为['LIST']
,您应该接受您的价值观。
请学习使用带引号的数组,以防止将来出现这样的错误
答案 1 :(得分:0)
取决于您的Key
和Value
如果您的数组键有值,它将直接输出
for ex
echo $request[ID];
b'coz id直接持有一个值;
但是
$request[SUCCESS];
// holds an array. you cannot echo a array directly
// to do something like this you will need the key of your inner
// array with outer array in combinations to echo the values
for ex
echo $request[SUCCESS][0]['MESSAGE'];
//键“O”也包含一个数组。所以你需要使用它的内部数组键
需要做同样的事情
echo $request[SUCCESS][0]['MESSAGE']['LIST']['credit_admin'];
// where again list is a array
答案 2 :(得分:0)
以前,如果在该名称下未定义任何常量,则每个不带引号的字符串都将被视为字符串,但是从PHP 7.2
开始,现在会发出级别E_WARNING
的错误。 Why is $foo[bar] wrong?
PHP Warning: Use of undefined constant test - assumed 'test' (this will throw an Error in a future version of PHP)
在此示例中,列表被视为构造list()
。不建议在关联数组中使用裸字符串作为键,并且应该避免。
正确的方法是使用引号(单引号或双引号)来调用它:
echo $request['SUCCESS'][0]['LIST'];
echo $request['SUCCESS'][0]['LIST']['credit'];