通过PHP键访问多维数组时出现问题
我有一个多维数组,需要循环访问第二级数组中的所有数组。数组来自对API的请求通过PHP键访问多维数组时出现问题,php,arrays,Php,Arrays,我有一个多维数组,需要循环访问第二级数组中的所有数组。数组来自对API的请求 Array ( [0] => Array ( [docGridArray] => Array ( [0] => Array ( [A] => pt_BR [B] => en_US [
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没有以应有的方式返回结果。。。