ホームページ > バックエンド開発 > PHPチュートリアル > この状況で FOREACH を使用するにはどうすればよいでしょうか?

この状況で FOREACH を使用するにはどうすればよいでしょうか?

WBOY
リリース: 2016-06-23 14:07:46
オリジナル
972 人が閲覧しました

すごいです
上記のコードは $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);

 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'] = '';		   }         }
ログイン後にコピー

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'] とは何ですかの内容 ?
テストコード

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'] = ''; //赋空值  }}
ログイン後にコピー
ログイン後にコピー
Array
(
[0] => NSK-34582
[1] => NSK-UUS89
[2] => NSK-89234
)
NSK-345_______
NSK-UUSNSK-345________
日本精工-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________
日本精工-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________
日本精工-892NSK-UUSNSK-345____________

それはあなたが期待していたものですか?
NSK-345____________
NSK-UUS____________
NSK-892____________
これは私が期待していたものです


これはどうですか?

関数 actionTest(){

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

}

意味は分かりました、$str に項目がいくつあっても、一致した結果に従って 1 つずつ置き換えて、使用後は null 値を代入してください。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート