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 举报,一经查实,本站将立刻删除。