Bor*_*ora 6 php arrays multidimensional-array
我必须通过搜索关键字过滤多维数组.
我使用的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
)
)
Run Code Online (Sandbox Code Playgroud)
我试过以下功能:
array_walk($lists, function(&$value, $index){
if (stripos($value->plugin_name, $this->search) === false)
unset($lists[$index]);
});
Run Code Online (Sandbox Code Playgroud)
这给了我 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]);
});
Run Code Online (Sandbox Code Playgroud)
我无法得到$searchvararray_walk function
$search = $this->search;
array_walk($lists, function (&$value, $index) use ($search) {
if (stripos($value->plugin_name, $search) !== false)
return $value;
});
Run Code Online (Sandbox Code Playgroud)
$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'];
Run Code Online (Sandbox Code Playgroud)
我发送带有use关键字的params 作为数组并引用self.
您需要使用use关键字.
array_walk($lists, function (&$value, $index) use ($search) {
Run Code Online (Sandbox Code Playgroud)
PHP不像JavaScript,所以匿名函数仍然在不同的范围内,但这use就是为了.我会链接到文档use,但似乎没有.