PHP 数组包含 0/

Posted

技术标签:

【中文标题】PHP 数组包含 0/【英文标题】:PHP array containing 0/ 【发布时间】:2018-02-13 12:28:06 【问题描述】:

嗨,我有一个包含类似模式的元素数组 $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,对吗? 【参考方案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 对,我的错,添加了^

以上是关于PHP 数组包含 0/的主要内容,如果未能解决你的问题,请参考以下文章

PHP preg_grep -> 搜索词包含特殊字符的搜索数组

PHP按包含日期的元素对多维数组进行排序

创建 PHP 数组,其中包含从 SQL 中按月提取的日期和订单数

如何在PHP中将多维数组过滤到另一个?

PHP学习中遇到的php方法

带有数组的PHP min和max,它可靠吗?