繁体   English   中英

PHP的foreach循环没有给出所有的结果?

[英]php foreach loop doesn't gives all the results?

我正在尝试从字符串中获取指定的单词。

我不知道我是否忘记了什么,但是它只显示前两个值? 有人可以帮我吗?

谢谢您的帮助!

$orgData["connector"] = 'some stringy thing SMA-female N-female FME-female';

if (preg_match_all('/(N-female|SMA-female|FME-female)/',$orgData["connector"], $matches)) {
    foreach ($matches as $i => $match) {
        if ($match[$i] == "N-female") {
            $con1 = "|Connector: N-female";
        }
        if ($match[$i] == "SMA-female") {
            $con2 = "|Connector: SMA-female";
        }
        if ($match[$i] == "FME-female") {
            $con3 = "|Connector: FME-female";
        }
        print_r($con1 . $con2 . $con3);
    }
}

您可以使用单个变量,只要找到匹配项即可追加:

$orgData = 'some stringy thing SMA-female N-female FME-female';
$con = "";
if (preg_match_all('/(?:N|SMA|FME)-female/', $orgData, $matches)) {
            foreach ($matches[0] as $match) {

                if ($match == "N-female") {
                    $con .= "|Connector: N-female";
                }
                if ($match == "SMA-female") {
                    $con .= "|Connector: SMA-female";
                }
                if ($match == "FME-female") {
                    $con .= "|Connector: FME-female";
                }
            }
        }
echo $con; // => |Connector: SMA-female|Connector: N-female|Connector: FME-female

参见PHP演示

请注意,我稍微整理了一下模式:(?: (?:N|SMA|FME)-female匹配NSMAFME ,然后-female

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM