我想在多维数组的所有列中搜索一个字符串,并且我希望所有匹配的行的数组结构完好无损。
Array
(
[0] => Array
(
['ConsumerDetail'] => Array(
[quote_id] => QU-12-14-T2887
[client_name] => asdf asdf
[agent_name] => flip flob 2313123
[zipcode] => 66002
[dob] => 01/02/1996
)
)
[1] => Array
(
['ConsumerDetail'] => Array(
[quote_id] => QU-12-14-R4118
[client_name] => james anderson
[agent_name] => JOSEPH NEPTUNE
[zipcode] => 64656
[dob] => 07/16/1958
))
[2] => Array
(
['ConsumerDetail'] => Array(
[quote_id] => QU-12-14-W2042
[client_name] => flip leathers
[agent_name] => test agen
[zipcode] => 65018
[dob] => 12/17/1979
))
)
等等...
现在,如果我搜索字符串
flip
,它应该得到具有相同结构的数组,其中包含数组0
索引的2
和0
索引元素,因为它在agent_name
和2
中找到,因为它在client_name
中找到
索引
结果数组将是这样的:
Array
(
[0] => Array
(
['ConsumerDetail'] => Array(
[quote_id] => QU-12-14-T2887
[client_name] => asdf asdf
[agent_name] => flip flob 2313123
[zipcode] => 66002
[dob] => 01/02/1996
)
)
[1] => Array
(
['ConsumerDetail'] => Array(
[quote_id] => QU-12-14-W2042
[client_name] => flip leathers
[agent_name] => test agen
[zipcode] => 65018
[dob] => 12/17/1979
))
)
如果您使用不存在/对比较不重要的分隔符将子数组展平为字符串,那么您可以进行简单的
strpos()
或 stripos()
检查。
代码:(演示)
$needle = 'flip';
var_export(
array_filter(
$array,
fn($row) => stripos(implode('_', $row['ConsumerDetail']), $needle) !== false
)
);