如何查找数组值中的某些单词是否在同一个数组php中

我有这个数组


Array

(

    [0] => Array

        (

            [time] => 18:25:00

            [artist] => LUIS RODRIGUEZ

        )


    [1] => Array

        (

            [time] => 18:34:00

            [artist] => THE BLACK EYED PEAS FT J BALVIN

        )


    [2] => Array

        (

            [time] => 18:37:00

            [artist] => THE BLACK EYED PEAS FT J BALVIN

        )


    [3] => Array

        (

            [time] => 18:44:00

            [artist] => J BALVIN

        )

    [4] => Array

        (

            [time] => 18:44:00

            [artist] => LUIS RODRIGUEZ & DEN HARROW

        )


)

我想检查其他数组值中是否包含某些单词,所以


J BALVIN is in 1,2,3

LUIS RODRIGUEZ in in 0 and 4

那么我怎样才能找到艺术家的价值是否与其他人相似呢?我希望结果可以告诉我哪里有相似的词并且还可以得到时间。我尝试使用 array_intersect 但它不起作用


通过循环我可以找到值


$input = array(array('time' => '18:44:00', 'artist' => 'LUIS RODRIGUEZ & DEN HARROW'), array('time' => '18:45:00', 'artist' => 'J BALVIN'), array('time' => '18:34:00', 'artist' => 'THE BLACK EYED PEAS FT J BALVIN'), array('time' => '18:37:00', 'artist' => 'THE BLACK EYED PEAS FT J BALVIN'), array('time' => '18:44:00', 'artist' => 'J BALVIN'));


foreach ($input as $inputs) {

    $time = $inputs['time'];

    $artist = $inputs['artist'];

}

但是我怎样才能比较字符串呢?如果我使用 in_array 结果不是我想要的


foreach ($input as $inputs) {

    $time = $inputs['time'];

    $artist = $inputs['artist'];


    if (in_array($artist, $inputs)) {

        echo $artist . '<br>';

    }

}

我必须改变我所有的方法,但是@Barmar 的建议帮助我改进了我的新功能,所以你可以在这里查看


青春有我
浏览 162回答 2
2回答

至尊宝的传说

$inputs不是一个字符串数组,它是一个二维数组,所以你不能用in_array()它来搜索它。您可以使用array_column()创建所有艺术家的数组,并进行搜索。您不能用于in_array()搜索,因为它完全匹配。遍历它并调用strstr()以测试当前艺术家是否是子字符串。$artists = array_column($input, 'artist');foreach ($input as $inputs) {&nbsp; &nbsp; $time = $inputs['time'];&nbsp; &nbsp; $artist = $inputs['artist'];&nbsp; &nbsp; foreach ($artists as $index => $a) {&nbsp; &nbsp; &nbsp; &nbsp; if (strstr($a, $artist)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "$artist is in $index";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

明月笑刀无情

你可以试试function findIndexesByArtist($array, $name) {&nbsp; &nbsp; return array_keys(array_filter($array, function($item) {&nbsp; &nbsp; &nbsp; &nbsp;return (strpos($item['artist'], $name) !== false);&nbsp; &nbsp; }));}
打开App,查看更多内容
随时随地看视频慕课网APP