求助!如上图,只要某列出现一次空值,则排除此列,怎么实现
回复讨论(解决方案)
这样??
$arr=array( 'listid'=>array('',5), 'title'=>array('',38), 'type'=>array('','我有'), 'count'=>array('',3), 'content'=>array('无','无'));foreach($arr as $k=>$v){ if(is_array($v)){ foreach($v as $v2){ if($v2==''){ unset($arr[$k]); } } }}echo "";print_r($arr);echo "";/*Array( [content] => Array ( [0] => 无 [1] => 无 ))*/
我看你的意思 应该不是2楼回答的 ,你的数据结构是一个好像是 文章的 就是几个文章 是不是全部剔除 第一个数据 只留下 每一个的第二个键值呢
foreach循环数组,发现空值先让该行=null,然后unset掉
3楼就是我想表达的意思,在上面的例子中!就是保留第二个的键值,因为全部有值,该怎样实现呢
建议贴出你的数组和最后结果。并说明一下原理。
print_($_POST);
结果:
Array
(
[listid] => Array
(
[0] => 1
[1] => 5
[2] => 4
)
[title] => Array
(
[0] =>
[1] => 33
[2] => 39
)
[type] => Array
(
[0] => u
[1] => t
[2] =>
)
[count] => Array
(
[0] =>
[1] => 7
[2] =>
)
[content] => Array
(
[0] => 无
[1] => 无
[2] => 无
)
)
$arr=array( 'listid' => array('', 5), 'title' => array('', 38), 'type' => array('', '我有'), 'count' => array('', 3), 'content' => array('无','无'),);$t = call_user_func_array('array_map', array_merge(array(null), $arr));foreach($t as $k=>$v) if(array_diff($v, array('')) != $v) unset($t[$k]);$t = count($t) == 1 ? array_chunk(current($t), 1) : call_user_func_array('array_map', array_merge(array(null), $t));print_r(array_combine(array_keys($arr), $t));
Array( [listid] => Array ( [0] => 5 ) [title] => Array ( [0] => 38 ) [type] => Array ( [0] => 我有 ) [count] => Array ( [0] => 3 ) [content] => Array ( [0] => 无 ))
感谢版主回答!已经获得了想要的结果
现在是,如果$arr 中没有一组完整的值就会出错啊
谢谢,已经解决