• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

这种情况FOREACH怎么用

php 搞代码 4年前 (2022-01-23) 15次浏览 已收录 0个评论
文章目录[隐藏]
 foreach($str as $key=>$row)	     {		   if(preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match)){	       $str[$key]['darfon_pn']=substr_replace($match[0][0],$row['darfon_pn'],7,2);		   }else{		   $str[$key]['darfon_pn'] = '';		   }         }

以上代码只遍历了$match[0][0],如何才能遍历整个$match每个值

回复讨论(解决方案)

$str[$key][‘darfon_pn’]=substr_replace($match[$key][0],$row[‘darfon_pn’],7,2);

$str[$key][‘darfon_pn’]=substr_replace($match[0][ $key],$row[‘darfon_pn’],7,2);

if(preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match)) { //由于$sn是另外的变量,没有必要放在循环里多次检查  foreach($match[0] as $v) { //对于每一个匹配到的串    foreach($str as $key<p>5本文来源gao!daima.com搞$代!码#网#</p><pre>搞代gaodaima码

=>$row) { //修改$str $str[$key][‘darfon_pn’] = substr_replace($v, $row[‘darfon_pn’],7,2); } }}else{ //否则 foreach($str as $key=>$row) { $str[$key][‘darfon_pn’] = ”; //赋空值 }}

if(preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match)) { //由于$sn是另外的变量,没有必要放在循环里多次检查  foreach($match[0] as $v) { //对于每一个匹配到的串    foreach($str as $key=>$row) { //修改$str      $str[$key]['darfon_pn'] = substr_replace($v, $row['darfon_pn'],7,2);    }  }}else{ //否则  foreach($str as $key=>$row) {    $str[$key]['darfon_pn'] = ''; //赋空值  }}

这样基本上是对的了,只是为何输出只替换了第一个循环到的字符串,其他都是删除了,例:NSK-34582 NSK-UUS89 NSK-89234,输出为NSK-892NSK-UUSNSK-345PP,我想要的是NSK-892PPNSK-UUSPPNSK-345PP

最初的 $str[$key][‘darfon_pn’] 的内容是什么?
测试代码

$sn = 'NSK-34582 NSK-UUS89 NSK-89234';preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match);print_r($match[0]);$str = '________';foreach($match[0] as $v) {  $str = substr_replace($v, $str,7,2);  echo $str,PHP_EOL;}

Array
(
[0] => NSK-34582
[1] => NSK-UUS89
[2] => NSK-89234
)
NSK-345________
NSK-UUSNSK-345________
NSK-892NSK-UUSNSK-345________

是你期望的吗?

最初的 $str[$key][‘darfon_pn’] 的内容是什么?
测试代码

$sn = 'NSK-34582 NSK-UUS89 NSK-89234';preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match);print_r($match[0]);$str = '________';foreach($match[0] as $v) {  $str = substr_replace($v, $str,7,2);  echo $str,PHP_EOL;}

Array
(
[0] => NSK-34582
[1] => NSK-UUS89
[2] => NSK-89234
)
NSK-345________
NSK-UUSNSK-345________
NSK-892NSK-UUSNSK-345________

是你期望的吗?
NSK-345________
NSK-UUS________
NSK-892________
这个是我期望的

最初的 $str[$key][‘darfon_pn’] 的内容是什么?
测试代码

$sn = 'NSK-34582 NSK-UUS89 NSK-89234';preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match);print_r($match[0]);$str = '________';foreach($match[0] as $v) {  $str = substr_replace($v, $str,7,2);  echo $str,PHP_EOL;}

Array
(
[0] => NSK-34582
[1] => NSK-UUS89
[2] => NSK-89234
)
NSK-345________
NSK-UUSNSK-345________
NSK-892NSK-UUSNSK-345________

是你期望的吗?
NSK-345________
NSK-UUS________
NSK-892________
这个是我期望的

这样呢?

function actionTest(){

$sn = ‘NSK-34582 NSK-UUS89 NSK-89234’;
preg_match_all(‘/\b[Nn][Ss][Kk]-\w{5}/’,$sn,$match);
print_r($match[0]);
$str = ‘________’;
foreach($match[0] as $v) {
$key = substr_replace($v, $str,7);
echo $key;
}

}

明白你的意思了

preg_match_all('/\b[Nn][Ss][Kk]-\w{5}/',$sn,$match);foreach($str as $key=>$row){  if($match[0][0]){    $str[$key]['darfon_pn']=substr_replace($match[0][0],$row['darfon_pn'],7,2);    array_shift($match[0]);  }else{    $str[$key]['darfon_pn'] = '';  }}

无论 $str 有多少项,按匹配出的结果逐一替换,用完了就赋空值


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:这种情况FOREACH怎么用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址