Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Laravel_Multidimensional Array_Controller - Fatal编程技术网

Php 从多维数组中获取键值无效

Php 从多维数组中获取键值无效,php,arrays,laravel,multidimensional-array,controller,Php,Arrays,Laravel,Multidimensional Array,Controller,我试图从多维数组中获取一个名为“code”的值。当我以第一种方式转储并死亡时,它返回正确的值。当我想在代码中使用它时,它给出了错误“UndefinedIndex:code”。我还使用了array_column方式,即dd空数组 应获取正确$code的代码: foreach($house作为$house){ $code=$house['code'];//在dd中而不是在代码中返回正确的值 $code=array\u column($house,'code');//在dd中返回空数组,随后在文件\u

我试图从多维数组中获取一个名为“code”的值。当我以第一种方式转储并死亡时,它返回正确的值。当我想在代码中使用它时,它给出了错误“UndefinedIndex:code”。我还使用了array_column方式,即dd空数组

应获取正确$code的代码:

foreach($house作为$house){
$code=$house['code'];//在dd中而不是在代码中返回正确的值
$code=array\u column($house,'code');//在dd中返回空数组,随后在文件\u get\u内容中给出错误数组到字符串的转换
$a=文件内容('some-url'.$code./surveys');
$a=json_decode($a,true);
$surveys=$a['surveys'];
$completedSurveys=$a['surveysCompleted'];
$done=0;
$ndone=0;
foreach($completedSurveys作为$complete){
如果($完成){
$done++;
}否则,如果(!$complete){
$ndone++;
}否则{继续;}
}
}
$house
垃圾场:

array:30 [
    id: ''
    project: integer
    city: ''
    streetName: ''
    houseNumber: ''
    code: ''
    fullStreet: ''
    forms: array:1 [
        0: integer
    ]
]
$code
转储

$house['code']: "AB12-CD34-EF56-GH78"
array_column($house, 'code'): []

我想知道这个问题的解决方案,这样我就可以使用url中的$code从api中获取正确的内容。

您可以在整个数组中使用array\u列,而不是子数组。
$houses = 
[
    [
        'code' => '23',
        'city' => 'Dublin'
    ],
    [
        'city' => 'Canberra'
    ],
    [
        'code' => '47',
        'city' => 'Amsterdam'
    ]
];

var_export(array_column($houses, 'code'));
输出:

array (
  0 => '23',
  1 => '47',
)
然后你可以按照这些思路做一些事情

$get_survey = function ($code) {
    if($response = file_get_contents("http://example.com/$code/surveys"))
        if($json = json_decode($response, true))
            return $json;
};

$completed = [];
foreach(array_column($houses, 'code') as $code) {
    if($survey = $get_survey($code)) {
        // survey count calculation.
    } else {
        $completed[$code] = null; // failure to get survey data.
    }
}

array\u column返回一个数组,您将其用作文件\u get\u content中的字符串扫描是否显示所有
$house
的转储?似乎至少有一个字段没有
code
字段。并摆脱
否则{continue;}
,因为它永远不会消失execute@RomanBobrik抱歉,我不能,但你是对的$houses是一个60(0-59)的数组,只有前三个有'code'@coder是的,我意识到了这一点,这就是为什么我得到了错误的数组到字符串转换。这也是为什么这不是最好的解决方案的原因。首先,在你的循环中使用
if(isset($house['code']){…
,然后…