在多维数组的所有列中搜索字符串并返回匹配的行数组php

问题描述 投票:0回答:1

我想在多维数组的所有列中搜索一个字符串,并且我希望所有匹配的行的数组结构完好无损。

   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
            ))
              )
php cakephp-2.0
1个回答
0
投票

如果您使用不存在/对比较不重要的分隔符将子数组展平为字符串,那么您可以进行简单的

strpos()
stripos()
检查。

代码:(演示

$needle = 'flip';
var_export(
    array_filter(
        $array,
        fn($row) => stripos(implode('_', $row['ConsumerDetail']), $needle) !== false
    )
);
© www.soinside.com 2019 - 2024. All rights reserved.