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

PHP将逗号分隔的字符串与数组值匹配,但顺序不正确

PHP将逗号分隔的字符串与数组值匹配,但顺序不正确

PHP
慕的地6264312 2022-10-14 15:08:33
我有一个可能很简单的查询,但在任何地方都找不到确切的解决方案。有一个逗号分隔的字符串,例如1,3和一个具有值的数组,例如1,3,2 OR 3,1,4。我需要一个函数,当我尝试在数组中搜索此字符串时,它对两个记录都返回 TRUE,因为数字 1 和 3 存在于两个数组值中,但顺序不同。我尝试使用array_search,strpos甚至explode首先在数组中创建字符串,然后array_intersect与两个数组相交,希望获得正匹配,但始终只返回值为 1、3、2 而不是 3、1、4 的数组。任何建议或指示都会非常有帮助。提前谢谢了。=======================PS:这是我的代码        //Enter your code here, enjoy!$st_array = array();$st_data1['id'] = 1;$st_data1['title'] = 'Jane doe';$st_data1['disk'] = '1,3,2';array_push($st_array, $st_data1);$rc_disk_id = '1,3';$st_data2['id'] = 2;$st_data2['title'] = 'Jane Smith';$st_data2['disk'] = '3,1,4';array_push($st_array, $st_data2);foreach($st_array as $st_data) {    $rc_disk_ids = explode(",",$rc_disk_id);    $match = array_intersect($rc_disk_ids, $st_data);    if (!empty($match)) {        echo "\nFound\n";        print_r($st_data);    }    else {        echo "Nope!";    }}
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

您的代码非常接近。您还需要explode中的磁盘 ID 列表$st_data,然后用于array_diff检查该列表中是否存在所有$rc_disk_ids

foreach($st_array as $st_data) {

    $rc_disk_ids = explode(",",$rc_disk_id);

    $st_disk_ids = explode(',', $st_data['disk']);

    $match = array_diff($rc_disk_ids, $st_disk_ids);

    if (empty($match)) {

        echo "\nFound\n";

        print_r($st_data);

    }

    else {

        echo "Nope!";

    }

}

样本数据的输出:


Found

Array

(

    [id] => 1

    [title] => Jane doe

    [disk] => 1,3,2

)


Found

Array

(

    [id] => 2

    [title] => Jane Smith

    [disk] => 3,1,4

)

3v4l.org 上的演示


查看完整回答
反对 回复 2022-10-14
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

也许您可以尝试搜索字符串而不是比较数组。


$strArr = explode(",", "1,3");

$arrToBeSearched = ["1", "3", "2"];


foreach($strArr as $val){

    if(!in_array($val, $arrToBeSearched)){

        return FALSE;

    }

}


// If it reaches here, then all values in 

//the $strArr where found in the 

//$arrToBeSearched

return TRUE;


查看完整回答
反对 回复 2022-10-14
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信