Php 数组\u筛选器跳过空值或0值
我想要像这样拆分一个url:Php 数组\u筛选器跳过空值或0值,php,Php,我想要像这样拆分一个url:$url=“log/getLog/0/categorias/5/”使用此功能: $urlParts = array_filter(explode('/', $url)); 但这一回报: 数组(4){[0]=>string(11)“log”[1]=>string(8)“getLog”[3]=>string(10)“categorias”[4]=>string(1)“5”} 如何查看跳过的0值。如何避免此错误?array\u filter将删除所有具有null、空和0值
$url=“log/getLog/0/categorias/5/”代码>使用此功能:
$urlParts = array_filter(explode('/', $url));
但这一回报:
数组(4){[0]=>string(11)“log”[1]=>string(8)“getLog”[3]=>string(10)“categorias”[4]=>string(1)“5”}
如何查看跳过的0
值。如何避免此错误?array\u filter
将删除所有具有null
、空
和0
值的元素。
在您的情况下,要处理值0
,可以使用回调函数,在这里您可以明确指定允许哪些值以及忽略哪些值
我已经创建了一个自定义回调函数,该函数将接受0
但过滤null
、empty
和false
值
<?php
$url = "log/getLog/0/categorias/5/";
$urlParts = array_filter(explode('/', $url), function($v){
return $v !== false && !is_null($v) && ($v != '' || $v == '0');
});
print_r($urlParts);
$url = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => 0
);
$urlParts = array_filter($url, function($v){
return $v !== false && !is_null($v) && ($v != '' || $v == '0');
});
print_r($urlParts);
?>
正在工作传递一个匿名函数,您只需过滤掉“
嗯,请举个例子好吗@Rizier123看一下手册:这里还有一个链接,当您不传递回调时,它默认过滤掉了什么。字符串日志的长度不是11!你可以$url=rtrim($url,'/')首先是代码>而不是数组过滤器。你会认为是空的($v)&&“0”!=$v
将更短,以实现相同的结果该值更短,但在“空白”和“0”情况下不起作用。如果您可以创建一个可用的小提琴,将非常有用:)。一切看起来都很好,除了可能有点凌乱:return$v!==假&!为空($v)&($v!=''| |$v=='0')
可能会被更干净的代码替换:return!在数组中($v,[false,null,][],true)代码>
Array
(
[0] => log
[1] => getLog
[2] => 0
[3] => categorias
[4] => 5
)
Array
(
[0] => foo
[2] => -1
[5] => 0
)