Php 如何在数组索引中正确使用preg_match?

Php 如何在数组索引中正确使用preg_match?,php,regex,Php,Regex,代码: 输出应为: $array[ ( preg_match( '/pdf-\d/', $key ) ? true : false ) + '[' + ( preg_match( '/pdf-total-\d/', $key ) ? true : false ) + ']' ] 实际上,您使用的是三元运算符: $array['pdf-1[pdf-total-1]'] 这将返回true或false,但不会返回pdf-1或[pdf-total-1] 也许你想要更多这样的东西: preg_matc

代码:

输出应为:

$array[ ( preg_match( '/pdf-\d/', $key ) ? true : false ) + '[' + ( preg_match( '/pdf-total-\d/', $key ) ? true : false ) + ']' ]

实际上,您使用的是三元运算符:

$array['pdf-1[pdf-total-1]']
这将返回
true
false
,但不会返回
pdf-1
[pdf-total-1]

也许你想要更多这样的东西:

preg_match( '/pdf-\d/', $key ) ? true : false

但是它在任何情况下都没有多大意义,因为
$key
匹配第一个模式它匹配第二个模式你没有帮自己任何忙,而是把所有的模式都塞进一行。
preg_match('/pdf-\d/',$key)
将返回true或false,你不需要
?true:false
,如果您使用
preg_match('/pdf-(\d)/',$key)
这将返回一个包含(\d)found的数组感谢回复人员,但我自己解决了这个问题。我只是在jquery中添加了一个隐藏的输入值,并在php中匹配它。非常感谢。@nicearma:噢
preg_match
在没有匹配项时返回0,在找到匹配项时返回1,在出现错误时返回false。@nicearma:即使使用捕获组
preg_match
也不会返回匹配的内容!
$array[ 
        ( preg_match( '/pdf-\d/', $key ) ? $key: false ) . 
        '[' . ( preg_match( '/pdf-total-\d/', $key ) ? $key: false ) . ']' 
      ]