php – 匹配第二个数组中的子字符串
发布时间:2020-12-13 16:56:56 所属栏目:PHP教程 来源:网络整理
导读:PHP新手,我有两个数组,我需要遍历array1和$value = 2,看看数组的$key中是否有$key匹配(例如,在fruit1和fruit 4中找到uit)然后除匹配键值为2. 我一直在尝试使用preg_match,但是一路走来都很奇怪,我不确定我哪里出错了.任何见解将不胜感激. ?php$array = array
PHP新手,我有两个数组,我需要遍历array1和$value = 2,看看数组的$key中是否有$key匹配(例如,在fruit1和fruit 4中找到uit)然后除匹配键值为2.
我一直在尝试使用preg_match,但是一路走来都很奇怪,我不确定我哪里出错了.任何见解将不胜感激. <?php $array = array( 'fruit1' => 1,'hugo' => 2,'helmet' => 3,'fruit4' => 4,'captain' => 5); $array1 = array( 'uit' => 2,'tes' => 1,'ain' => 3,); foreach($array1 as $key=>$value){ if($value==2){ $ch=$key; $pattern = '/[$ch]/'; foreach($array as $key=>$value){ if(preg_match($pattern,$key)){ $newvalue =$value[$key]/2; echo "$key $newvalue"; }}}}?> 解决方法
假设
所以,基本上,你想检查每个$array1键是否是$array的子??字符串,是吗? 第一个问题(模式) 正则表达式模式/ [$ch] /可能不正确,因为它意味着:
这种模式将匹配: > hugo 修正了模式 我想你想要的东西是$pattern =’/’. $ch. ‘/’ ;. 在这种情况下,var $ch得到扩展,因此对于$array1的第一个元素,它变为/ uit /. 这种模式意味着:
此模式将匹配: > fruit1 不需要Preg_match 你可以使用strpos. foreach($array1 as $needle => $val1){ if($val1 == 2) { foreach ($array as $haystack => $val2) { if (strpos($haystack,$needle) !== false) { echo "$haystack => $val2n"; } } } } 请参阅PHP Sandbox的代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |