如何将多个变量从全局范围传递到回调范围?

问题描述 投票:0回答:1

我正在尝试使用下面的代码来过滤 JSON 数据,如果我给过滤器它就可以完美地工作

$search_text = '53';
$filter_name ='title';

$expected88 = array_filter($array, function($el) use ($search_text) {
       return ( stripos($el['title'], $search_text) !== false );
     //      return ( stripos($el[$filter_name], $search_text) !== false );
     
        
    });

echo json_encode($expected88,true);

你可以看到,如果我在

$el['title']
中给出这个
stripos()
它有效,但如果我尝试通过
$el[$filter_name]
它不起作用。

我尝试了其他几种组合,例如

$el["$filter_name"]
$el['.$filter_name.']
但没有任何效果——我想传递变量的是动态数据。

php callback scope strpos stripos
1个回答
2
投票

$filter_name
在匿名函数中不可用,因此您需要
use
它,与
$search_text
一样:

$expected88 = array_filter($array, function($el) use ($search_text, $filter_name) {
   return ( stripos($el[$filter_name], $search_text) !== false );
});
© www.soinside.com 2019 - 2024. All rights reserved.