PHP中preg_match_all返回的$numbers数组具体结构是什么
PHP提取字符串末尾数字示例的$numbers变量说明
$numbers不是需要开发者提前手动赋值的硬编码数组,它是preg_match_all()函数通过引用传参接收匹配结果的输出变量,会在函数执行时被自动填充内容,不需要提前定义取值。原回答仅提到$numbers是数组类型,没有说明它是函数自动填充的输出参数,才会造成需要手动定义数组的误解。
针对给出的示例代码,变量结构和运行逻辑如下:
- 正则规则
/\d+/会匹配字符串中所有连续的数字序列,支持任意长度的多位数,不存在只能匹配0-9的限制 - 函数执行完成后,
$numbers是固定结构的二维数组:$numbers[0]存储所有完整匹配到的数字字符串,按在文本中出现的顺序排列- 如果正则写了捕获子组,才会生成
$numbers[1]、$numbers[2]等对应子组匹配结果的项,本示例无捕获子组,仅$numbers[0]有有效内容
- 以示例中
$text = "1 out of 23"为例,函数执行后$numbers[0]的值为['1', '23'],通过end($numbers[0])就能取到最后一个匹配到的数字"23",代码可直接运行复现结果。
示例代码原文:
$text = "1 out of 23"; if(preg_match_all('/\d+/', $text, $numbers)) $lastnum = end($numbers[0]);
内容的提问来源于stack exchange,提问作者BigTechCensorVictim
相关产品推荐
相关产品推荐

