为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
青春有我 2022-12-11 16:29:58
我有这个数组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,3LUIS 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 的建议帮助我改进了我的新功能,所以你可以在这里查看
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

$inputs不是一个字符串数组,它是一个二维数组,所以你不能用in_array()它来搜索它。


您可以使用array_column()创建所有艺术家的数组,并进行搜索。


您不能用于in_array()搜索,因为它完全匹配。遍历它并调用strstr()以测试当前艺术家是否是子字符串。


$artists = array_column($input, 'artist');

foreach ($input as $inputs) {

    $time = $inputs['time'];

    $artist = $inputs['artist'];


    foreach ($artists as $index => $a) {

        if (strstr($a, $artist)) {

            echo "$artist is in $index";

            break;

        }

    }

}


查看完整回答
反对 回复 2022-12-11
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

你可以试试


function findIndexesByArtist($array, $name) {

    return array_keys(array_filter($array, function($item) {

       return (strpos($item['artist'], $name) !== false);

    }));

}


查看完整回答
反对 回复 2022-12-11
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号