微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 匹配第二个数组中的子字符串

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 => $val2\n";
            } 
        }
    }
}

请参阅PHP Sandbox代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐