Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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 - Fatal编程技术网

通过PHP键访问多维数组时出现问题

通过PHP键访问多维数组时出现问题,php,arrays,Php,Arrays,我有一个多维数组,需要循环访问第二级数组中的所有数组。数组来自对API的请求 Array ( [0] => Array ( [docGridArray] => Array ( [0] => Array ( [A] => pt_BR [B] => en_US [

我有一个多维数组,需要循环访问第二级数组中的所有数组。数组来自对API的请求


Array
(
    [0] => Array
(
    [docGridArray] => Array
        (
            [0] => Array
                (
                    [A] => pt_BR
                    [B] => en_US
                    [C] => pt_PT
                    [D] => es_MX
                    [E] => en_CA 
                )
        )

    [successCount] => 18
    [totalCount] => 18
)
1
)
我需要的数组是docGridArray,但我无法访问。我在foreach循环中尝试了许多变体,但主要得到的是警告:非法字符串偏移量

以下是我迄今为止所做的尝试:

//这个给了我非法的字符串偏移量
foreach((数组)$response[0]['docGridArray']作为$item){
echo$项目;
}
//这个很好用
foreach((数组)$response[0]作为$item){
echo$项目;
}
//这一条给了我警告:为foreach()提供的参数无效
foreach($response[0]作为$item){
echo$项目;
}

我似乎无法使用字符串键进行访问。

结果是一个对象

试试这个,告诉我这是否有效:

$you_array = json_decode(json_encode($api_result), true);    
foreach(array_column($your_array, "docGridArray") as $res){
        //your code
    }

玩得开心:)

结果是一个对象

试试这个,告诉我这是否有效:

$you_array = json_decode(json_encode($api_result), true);    
foreach(array_column($your_array, "docGridArray") as $res){
        //your code
    }

玩得开心:)

您可以访问子数组docGridArray中的项,如下所示:

foreach ($response[0]['docGridArray'] as $item ){
      echo $item['docCodeLanguage']; 
}

正如@lucas所提到的,在循环之前,您必须解码您的响应。

您可以访问子数组docGridArray中的项,如下所示:

foreach ($response[0]['docGridArray'] as $item ){
      echo $item['docCodeLanguage']; 
}

正如@lucas所提到的,在循环之前,您必须解码您的响应。

您不应该直接访问
$response[0]
,除非您确定端点始终只返回1项

在本例中,您可以执行以下操作:

$response = [
    [
        'docGridArray' => [
            [
                    'docCodeLanguage' => 'pt_BR',
                    'docCommunity' => "something 1",
                    'docCommunityNoLink' => "something 2",
                    'docDomain' => "something 3",
                    'docExtIcon' => "something 4"
            ]
        ],
        'successCount' => 18,
        'totalCount' => 18,
    ]
];

foreach ($response as $item) {
    foreach($item['docGridArray'] as $document) {
        foreach($document as $key => $element) {
                echo $key . ' - ' . $element . "\n";    
        }
    }
}

/* will print:
docCodeLanguage - pt_BR
docCommunity - something 1
docCommunityNoLink - something 2
docDomain - something 3
docExtIcon - something 4
*/

您不应该直接访问
$response[0]
,除非您确定端点始终只返回1项

在本例中,您可以执行以下操作:

$response = [
    [
        'docGridArray' => [
            [
                    'docCodeLanguage' => 'pt_BR',
                    'docCommunity' => "something 1",
                    'docCommunityNoLink' => "something 2",
                    'docDomain' => "something 3",
                    'docExtIcon' => "something 4"
            ]
        ],
        'successCount' => 18,
        'totalCount' => 18,
    ]
];

foreach ($response as $item) {
    foreach($item['docGridArray'] as $document) {
        foreach($document as $key => $element) {
                echo $key . ' - ' . $element . "\n";    
        }
    }
}

/* will print:
docCodeLanguage - pt_BR
docCommunity - something 1
docCommunityNoLink - something 2
docDomain - something 3
docExtIcon - something 4
*/

显示
var\u导出的结果($response)也许:
foreach($response as$item){echo$item['docGridArray']}
显示变量导出($response)的结果
也许:
foreach($response as$item){echo$item['docGridArray']}
请显示与
//这一个给了我非法的字符串偏移量foreach((array)$response[0]['docGridArray']as$item){
我在执行此操作时没有强制转换数组,而且效果很好,我在phponlinePlease中进行了尝试。请显示与
//此命令的不同之处。//此命令将非法字符串偏移量foreach((数组)$response[0]['docGridArray']作为$item){
我在执行此操作时没有强制转换数组,效果很好,我在phponline中尝试使用json_decode返回null。我看不出出现此问题的原因,没有任何意义。@LucasdeFreitasMiranda您以前是否将其编码为json?否则这很正常,因为您的元素是一个对象。因此,将其解码为json无法工作;我没有,现在我没有是的,但是当我尝试在数组列中使用时,我得到一个错误:警告:数组列()希望参数1是数组,字符串给定。@LucasdeFreitasMiranda,此错误是合法的,因为
$your\u array
不是真正的数组,但此函数不起作用。请运行
var\u dump(json\u encode($res))
并给出结果。var\u dump返回:string(52440)““Array\n(\n[docGridArray]=>Array\n(\n[0]=>Array\n(\n[docCodeLanguage]=>pt\u BR\n,json\u编码只是添加了一些东西。可能API没有按它应该的方式返回结果…当我使用json\u解码时返回null。我看不出这个问题的原因,没有任何意义。@LucasdeFreitasMiranda你以前编码过json吗?否则这是正常的,因为你的元素是一个对象。因此,像json一样解码是不可能的rk;我没有,现在我有了,但是当我尝试在数组列中使用时,我得到一个错误:警告:数组列()希望参数1是数组,字符串给定。@LucasdeFreitasMiranda,这个错误是合法的,因为
$your\u array
不是一个真正的数组,这个函数不会工作。请运行
var\u dump(json\u encode($res))
并给我结果。var\u dump返回:string(52440)““Array\n(\n[docGridArray]=>Array\n(\n[0]=>Array\n(\n[docCodeLanguage]=>pt\u BR\n,json\u编码只是添加了一些内容。也许API没有以应有的方式返回结果。。。