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代码

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...