我必须按搜索关键字过滤多维数组。
我正在使用array_walk
,但我无法将搜索到的关键字发送到array_walk
中的class
Array
(
[0] => SimpleXMLElement Object
(
[plugin_name] => Custom Extension
)
[1] => SimpleXMLElement Object
(
[plugin_name] => Hello World
)
[2] => SimpleXMLElement Object
(
[plugin_name] => Test Plugin
)
)
我尝试了以下功能:
array_walk($lists, function(&$value, $index){
if (stripos($value->plugin_name, $this->search) === false)
unset($lists[$index]);
});
这给了我Fatal error: Using $this when not in object context in
$search = $this->search;
array_walk($lists, function(&$value, $index){
if (stripos($value->plugin_name, $search) === false)
unset($lists[$index]);
});
我无法从$search
array_walk function
var
$search = $this->search;
array_walk($lists, function (&$value, $index) use ($search) {
if (stripos($value->plugin_name, $search) !== false)
return $value;
});
$search
已成功通过use
关键字,但$lists
数组未更改,因此未引用。为什么呢?
我应该做什么或使用其他功能而不是array_walk
?
$params = array('search' => $this->search, 'data' => $lists);
array_walk($lists, function (&$value, $index) use (&$params) {
if (stripos($value->plugin_name, $params['search']) === false)
unset($params['data'][$index]);
});
$lists = $params['data'];
我发送带有use
关键字的params作为数组并引用self。
答案 0 :(得分:6)
您需要使用use
关键字。
array_walk($lists, function (&$value, $index) use ($search) {
PHP与JavaScript不同,因此匿名函数仍然在不同的范围内,但这就是use
的用途。我会链接到use
上的文档,但似乎没有。