我想使用数组创建一些东西。我有1个数组,我需要将其拆分为2个数组。之后,从两个数组中搜索特定项目并将其删除,然后将其从2个数组组合为1个数组。
我该怎么做?
我已经尝试将unset用于数组,但是由于我的数组数据格式为16/2 / 1 / 1和16/2 / 1 < / strong> / 5。我需要删除具有1的数据。
我的格式数组是这样的
Array
(
[1] => Array
(
[0] => 16/2/1/1 --> remove this have 1 after 2
[1] => 16/2/0/2
[2] => 16/2/0/3
[3] => 16/2/0/4
[4] => 16/2/0/5
[5] => 16/2/0/6
[6] => 16/2/0/7
[7] => 16/2/0/8
[8] => 16/2/0/9
[9] => 16/2/0/10
[10] => 16/2/0/11
[11] => 16/2/0/12
[12] => 16/2/0/13
[13] => 16/2/0/14
[14] => 16/2/0/15
[15] => 16/2/0/16
)
[2] => Array
(
[0] => 16/2/0/1
[1] => 16/2/0/2
[2] => 16/2/0/3
[3] => 16/2/0/4
[4] => 16/2/1/5 --> and this have 1 after 2 before 5
[5] => 16/2/0/6
[6] => 16/2/0/7
[7] => 16/2/0/8
[8] => 16/2/0/9
[9] => 16/2/0/10
[10] => 16/2/0/11
[11] => 16/2/0/12
[12] => 16/2/0/13
[13] => 16/2/0/14
[14] => 16/2/0/15
[15] => 16/2/0/16
)
)
我希望输出类似(合并后)
Array
(
[0] => 16/2/0/2
[1] => 16/2/0/3
[2] => 16/2/0/4
[3] => 16/2/0/6
[4] => 16/2/0/7
[5] => 16/2/0/8
[6] => 16/2/0/9
[7] => 16/2/0/10
[8] => 16/2/0/11
[9] => 16/2/0/12
[10] => 16/2/0/13
[11] => 16/2/0/14
[12] => 16/2/0/15
[13] => 16/2/0/16
)
感谢您的时间来帮助我。
答案 0 :(得分:1)
我会使用preg_grep
,它允许您使用正则表达式搜索数组。
$array =[
'16/2/0/13',
'16/2/0/16',
'16/2/1/5'
];
$array = preg_grep('~^16/2/0/\d+$~', $array);
print_r($array);
输出
Array
(
[0] => 16/2/0/13
[1] => 16/2/0/16
)
正则表达式
^
匹配字符串的开头16/2/0/
-字面匹配(在字符串的开头,请参见上文)\d+
任何一位或多位数字$
匹配字符串的结尾因此,正则表达式是一种进行模式匹配的方法,在这种情况下,模式为16/2/0/{n}
,其中{n}
是任意数字。因此,通过这样做,我们只能找到与该模式匹配的那些项目。
然后,如果您有重复项,则可以执行array_unique()
并轻松删除。
有许多方法可以通过自定义回调等来完成array_filter
。但这是最直接的方法(如果您知道Regex)。
答案 1 :(得分:1)
使数组唯一,然后提取digits/digits/NOT 1/digits
的项目:
$array = preg_grep('#^\d+/\d+/[^1]/\d+#', array_unique($array));