加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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] /可能不正确,因为它意味着:

literally match a single character present in the following list ($,c,h)

这种模式将匹配:

> hugo
>头盔
>队长

修正了模式

我想你想要的东西是$pattern =’/’. $ch. ‘/’ ;.

在这种情况下,var $ch得到扩展,因此对于$array1的第一个元素,它变为/ uit /.

这种模式意味着:

literally match the sequence uit

此模式将匹配:

> fruit1
> fruit4

不需要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的代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读