PHP作用域问题:为什么在这种情况下未定义$ param

时间:2020-03-11 19:16:42

标签: php laravel scope

我具有以下功能。

public function searchAirports($query)
    {
            $url = 'storage/json/airports.json';
            $file = file_get_contents($url);
            $data = json_decode($file, true);

            $data = array_filter($data);
            $needles = ['name','city','country'];
            $NeedledResults = [];
            for( $i=0; $i < $needles; $i++ ) {
                $param = $needles[$i];
                $results= collect($data)->filter(function ($item) use ($query){ return false !== stristr($item[$param], $query); });
                $a = $results->toArray();
                array_push($NeedledResults,$a);
            }

            dd($NeedledResults);


           return $filteredResults;
    }

基本上,我有三个过滤器,用于按名称,城市和国家/地区搜索json数据集。 此功能可能并不漂亮,但是如果我直接用针线字符串之一替换$ param变量,它就可以了。

例如stristr($item['city'], $query);可以很好地工作,但是如果我用$ param替换它,则会出现未定义的错误。

这真让我发疯!如果有人能指出我正确的方向,那将是非常有用的。

感谢所有:)

  • 一个非常困惑的人,尽管是坚定的jr开发人员。

0 个答案:

没有答案