PHP - 如何从多维数组中回显值

时间:2015-07-10 05:52:52

标签: php arrays multidimensional-array

我有:

$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

我不明白为什么?我该怎么做? 谢谢

3 个答案:

答案 0 :(得分:0)

您没有使用引号来指定数组键。您应该使用['ID']代替[ID]

PHP为您修复此问题并假设您的意思是['ID']而不是[ID]并在日志中添加通知

这对[LIST]不起作用,但因为LIST是保留关键字。这意味着list在PHP中有一个函数。 PHP不知道你需要哪一个并且不返回结果。

[LIST]更改为['LIST'],您应该接受您的价值观。 请学习使用带引号的数组,以防止将来出现这样的错误

答案 1 :(得分:0)

取决于您的KeyValue

如果您的数组键有值,它将直接输出

  

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'];