我必须通过搜索关键字过滤多维数组。
我正在使用array_walk
,但我无法将搜索到的关键字发送到array_walk
inclass
多维数组
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
vararray_walk function
第三个
$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
关键字的参数作为数组并引用了self。