0
<<
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => soccer player
                    [1] => soccer player athlete who play soccer
                    [2] => sport
                    [3] => soccer
                    [4] => soccer football game in which two team of 11 player try to kick or head ball into opponent goal
                )

            [1] => Array
                (
                    [0] => soccer player
                    [1] => soccer player athlete who play soccer
                    [2] => play
                    [3] => activity
                    [4] => actor
                )

            [2] => Array
                (
                    [0] => soccer player
                    [1] => soccer player athlete who play soccer
                    [2] => player
                    [3] => commercial enterprise activity of provide good and service involve financial and commercial and industrial aspect
                    [4] => player person who participate in or be skilled at some game
                )

            [3] => Array
                (
                    [0] => soccer player
                    [1] => soccer player athlete who play soccer
                    [2] => athlete person train to compete in sport
                    [3] => athlete person train to compete in sport
                    [4] => athlete person train to compete in sport
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => athlete
                    [1] => athlete person train to compete in sport
                    [2] => sport
                    [3] => sport
                    [4] => sport
                )

            [1] => Array
                (
                    [0] => athlete
                    [1] => athlete person train to compete in sport
                    [2] => compete compete for something
                    [3] => compete compete for something
                    [4] => compete compete for something
                )

            [2] => Array
                (
                    [0] => athlete
                    [1] => athlete person train to compete in sport
                    [2] => train
                    [3] => train create by train and teach
                    [4] => train public transport provide by line of railway car couple together and draw by locomotive
                )

            [3] => Array
                (
                    [0] => athlete
                    [1] => athlete person train to compete in sport
                    [2] => person
                    [3] => person
                    [4] => person
                )

            [4] => Array
                (
                    [0] => athlete
                    [1] => athlete person train to compete in sport
                    [2] => athlete person train to compete in sport
                    [3] => athlete person train to compete in sport
                    [4] => athlete person train to compete in sport
                )

        )

>>

你好

我需要上面显示的数组的 php 搜索代码。但是搜索不应该是一个精确的字符串匹配,例如我正在搜索"11 player"它应该给我结果Array[0],正如它在Array[0][0][4]...中提到的那样

4

1 回答 1

0

你需要一个像这样的简单递归搜索函数。

<?php
    function recursive_search($array,$text,$path = "")
    {
        $result = array();
        foreach($array as $index => $value)
        {
            if(is_array($value))
                $result = array_merge($result,recursive_search($value,$text,$path . '/' . $index));
            else if(strpos($value,$text) !== false)
                $result[] = array('path' => $path . '/' . $index,'value' => $value); 
                //$result[] = $value; // use this line and delete above if you dont want path.


        }

        return $result;

    }

用法

 $my_array =
    array(
        array(
            array(
                "soccer player",
                "soccer player athlete who play soccer",
                "player",
                "commercial enterprise activity of provide good and service involve financial and commercial and industrial aspect",
                "player person who participate in or be skilled at some game",
                "soccer football game in which two team of 11 player try to kick or head ball into opponent goal"
            )
        ) ,
        array(
            "soccer player",
            "soccer player athlete who play soccer",
            "player",
            "commercial enterprise activity of provide good and service involve financial and commercial and industrial aspect",
            "player person who participate in or be skilled at some game",
            "soccer football game in which two team of 11 player try to kick or head ball into opponent goal"
        )
    );



    $elements = recursive_search($my_array,"11 player");

    var_dump($elements);

结果:

Array
(
    [0] => Array
        (
            [path] => /0/0/5
            [value] => soccer football game in which two team of 11 player try to kick or head ball into opponent goal
        )

    [1] => Array
        (
            [path] => /1/5
            [value] => soccer football game in which two team of 11 player try to kick or head ball into opponent goal
        )

)

如果你想要没有路径输出的元素将是这样的

Array
(
    [0] => soccer football game in which two team of 11 player try to kick or head ball into opponent goal
    [1] => soccer football game in which two team of 11 player try to kick or head ball into opponent goal
)
于 2012-07-21T16:44:27.543 回答