按(例如:标题或描述)值 (PHP) 中的关键字过滤多维数组



如何在"title"或"description"值中使用特定关键字过滤多维数组,如下面的数据数组:

Array
(
[0] => Array
(
[id] => 873
[title] => Mark
[description] => John Doe Billy
[category] => Array
(
[id] => 52
[name] => Wall Art
)
)
[1] => Array
(
[id] => 266
[title] => Ninja Turle
[description] => Mark Doe
[category] => Array
(
[id] => 52
[name] => Wall Art
)
)
[2] => Array
(
[id] => 227
[title] => Red Rose 
[description] => Billy Jean
[category] => Array
(
[id] => 52
[name] => Wall Art
)
)
)

以前我使用了下面的代码,它根据我的需要工作和显示,但同时我收到错误消息"注意:数组到字符串的转换"。

$search = "/mark/i";
$products = array_filter($data, function($a) use($search)  {
return preg_grep($search, $a);
});

我是否缺少代码中的某些内容? 或者有更好的方法。 提前谢谢你

您收到此通知是因为键category数组。PHP 尝试将此数组转换为字符串以应用preg_grep,这就是您收到此警告的原因。我想你可以做这样的事情:

$search = "mark";
$products = array_filter($data, function($a) use($search)  {
return false !== stripos($a['title'], $search) 
|| false !== stripos($a['description'], $search);
});

更新的变体 - 取消设置数组值并对其余值(字符串(运行preg_grep

$search = "/mark/i";
$products = array_filter($data, function($a) use($search)  {
unset($a['category']);
return preg_grep($search, $a);
});

最新更新