Heim > Backend-Entwicklung > PHP-Tutorial > 这种情况FOREACH怎么用

这种情况FOREACH怎么用

WBOY
Freigeben: 2016-06-23 14:07:46
Original
957 Leute haben es durchsucht

 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'] = '';		   }         }
Nach dem Login kopieren

以上代码只遍历了$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=>$row) { //修改$str      $str[$key]['darfon_pn'] = substr_replace($v, $row['darfon_pn'],7,2);    }  }}else{ //否则  foreach($str as $key=>$row) {    $str[$key]['darfon_pn'] = ''; //赋空值  }}
Nach dem Login kopieren
Nach dem Login kopieren

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'] = ''; //赋空值  }}
Nach dem Login kopieren
Nach dem Login kopieren

这样基本上是对的了,只是为何输出只替换了第一个循环到的字符串,其他都是删除了,例: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;}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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;}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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;}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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'] = '';  }}
Nach dem Login kopieren
无论 $str 有多少项,按匹配出的结果逐一替换,用完了就赋空值

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage