【问题标题】:PHP array containing 0/PHP 数组包含 0/
【发布时间】:2026-01-16 00:15:02
【问题描述】:

嗨,我有一个包含类似模式的元素数组 $arr = 数组 ('0/' ,'0/12/3','1/2') 我需要有我尝试使用命令的“0/”元素数组

arr_with_zero_slash = preg_grep('@$[0-9]/$@',$arr)

但函数仅适用于 1/ 、 2/ 等女巫模式。这是因为 0/ 被视为特殊符号,但我不知道如何处理。有什么想法吗?

【问题讨论】:

  • "0/ 被视为特殊符号" -- 0/没有什么特别之处
  • 仅供参考,“命令”不是有效的 PHP 代码。另外,[0-9] 为您提供从 0 到 9 的所有数字,您只想要 0,对吗?

标签: php preg-grep


【解决方案1】:

我想这就是你的意思: 使用 foreach 循环遍历数组 $arr,并取消设置(删除)所有不以 '0/' 开头的元素...

$arr = array ('0/' ,'0/12/3','1/2');
foreach($arr as $key=>$value){
  if(substr($value,0,2)<>"0/"){
    unset($arr[$key]);
  }
}

与:

$arr = array ('0/' ,'0/12/3','1/2') 

这将是结果:

array(2) { [0]=> string(2) "0/" [1]=> string(6) "0/12/3" }

【讨论】:

    【解决方案2】:

    如果你想获取所有以0/ 开头的元素,试试这个:

    <?php
    $arr = array ('0/' ,'0/12/3','1/2', '1/0/4');
    $arr_with_zero_slash = preg_grep('@^0/@',$arr);
    print_r($arr_with_zero_slash);
    

    这将输出

    Array (
        [0] => 0/
        [1] => 0/12/3
    )
    

    删除第一个$,因为它是meta-character

    [0-9] 更改为0,因为您只需要0/ 而不是1/2/ 等。

    删除了第二个$,因为你还想要0/12/3

    【讨论】:

    • 这也将匹配像1/0/4这样的字符串。
    • @simon 对,我的错,添加了^