preg_match
接受$matches
参数作为参考。我见过的所有例子都没有在它作为参数传递之前初始化它。像这样:
preg_match($somePattern, $someSubject, $matches);
print_r($matches);
这不容易出错吗?如果$matches
已包含值,该怎么办?我认为应该在将它作为arg传递之前初始化为空数组。像这样:
$matches = array();
preg_match($somePattern, $someSubject, $matches);
print_r($matches);
我只是偏执狂吗?
答案 0 :(得分:6)
无需初始化$ match,因为它将随结果一起更新。它实际上是函数的第二个返回值。
答案 1 :(得分:1)
正如Chris Lear所说,你不需要初始化$matches
。但是,如果您的模式包含您希望稍后使用的捕获组,则最好编写:
$somePattern = '/123(456)/';
if (preg_match($somePattern, $someSubject, $matches)) {
print_r($matches[1]);
}
避免结果数组中未定义索引的错误。但是,您可以使用isset($matches[1])
检查索引是否存在。