• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

求一个递归函数

php 搞代码 3年前 (2022-01-23) 9次浏览 已收录 0个评论
文章目录[隐藏]

小弟想求一个递归函数,能判断多维数组是否为。像array(array(),array(array(),array()))这样的判定为空,但只要有一个数组里含有非空值元素,就判定不为空,例如:array(array(),array(array(‘a’),array()));

????????????????????????????????
我自己用CI写的一个函数,但是没办法准确判定;
function is_empty($mixed){
if(is_array($mixed) && !empty($mixed)){
foreach($mixed as $v){
$this->is_empty($v);
}
}
if($mixed === ‘0’ || $mixed === 0 || $mixed === ‘false’ || $mixed === false || $mixed === ‘null’){
return -1;
}
elseif(!empty($mixed)){
return -1;
}
else{
return 1;
}
}
??????-????????????????????????????????????
求大神帮忙

回复讨论(解决方案)

function is_empty($mixed){
if(is_array($mixed) && !empty($mixed)){
foreach($mixed as $v){
if($this->is_empty($v) == ??) return 1;
}
…..

红色的一定要!
但是我被你搞混昏了

if($mixed === ‘0’ || $mixed === 0 || $mixed === ‘false’ || $mixed === false || $mixed === ‘null’){
return -1;
}
可知为空时返回 -1

elseif(!empty($mixed)){
return -1;
}
又是不为空时返回 -1

if($mixed === ‘0’ || $mixed === 0 || $mixed === ‘false’ || $mixed === false || $mixed === ‘null’){
return -1;
}
这段的意思是不排除变量的值可能是字符串‘0’,‘false’,‘null’或者整型0,所以才用了全等于,其他非空项返回-1,空则返回1;

照你说的,循环里加了IF语句,但还是不行
????????????????????????????????????
if(is_array($mixed) && !empty($mixed)){
foreach($mixed as $v){
if($this->is_empty($v) == -1){
return -1;
}
}
}
if($mixed === ‘0’ || $mixed === 0 || $mixed === ‘fal本%文来源gaodaimacom搞#^代%!码网@搞代gaodaima码se’ || $mixed === ‘null’){
return -1;
}
elseif(!empty($mixed)){
return -1;
}
else{
return 1;
}

那就是改
if($this->is_empty($v) == ??) return 1;

if($this->is_empty($v) == 1) return 1;

这样写可能好些

$a = array(array(),array(array(1),array()));$b = array(array(),array(array(),array()));echo no_empty($a);echo no_empty($b);//检查是否不为空function no_empty($ar) {  if(! is_array($ar)) return 1;  $res = 0;  foreach($ar as $v) {    if(is_array($v)) $res |= no_empty($v);    else $res = 1;  }  return $res;}

成功了~把原来函数的判断顺序改了一下就成功了
————————————————————————————-
function no_empty($ar) {
//排除字符串’0′,’false’,’null’和INT 0 、布尔false;
if($ar === ‘0’ || $ar === 0 || $ar === ‘false’ || $ar === false || $ar === ‘null’){
return 1;
}
//如果不是数组且不是上面的值,直接判定是否为空
elseif(! is_array($ar)){
if(!empty($ar)){
return 1;
}
return -1;
}
//递归
else{
//初始化$res
$res = -1;
foreach($ar as $v) {
//只要有多维数组里有一个非空元素值,就记录下来
if($this->no_empty($v) === 1){
$res = 1;
}
}
return $res;
}
}

我可不可以给分我自己

学学怎么玩。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:求一个递归函数
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址