你应该在调用preg_match之前初始化$ match吗?

时间:2014-05-22 14:24:42

标签: php regex

preg_match接受$matches参数作为参考。我见过的所有例子都没有在它作为参数传递之前初始化它。像这样:

preg_match($somePattern, $someSubject, $matches);
print_r($matches);

这不容易出错吗?如果$matches已包含值,该怎么办?我认为应该在将它作为arg传递之前初始化为空数组。像这样:

$matches = array();
preg_match($somePattern, $someSubject, $matches);
print_r($matches);

我只是偏执狂吗?

2 个答案:

答案 0 :(得分:6)

无需初始化$ match,因为它将随结果一起更新。它实际上是函数的第二个返回值。

答案 1 :(得分:1)

正如Chris Lear所说,你不需要初始化$matches。但是,如果您的模式包含您希望稍后使用的捕获组,则最好编写:

$somePattern = '/123(456)/';
if (preg_match($somePattern, $someSubject, $matches)) {
    print_r($matches[1]);
}

避免结果数组中未定义索引的错误。但是,您可以使用isset($matches[1])检查索引是否存在。