首先我们来看看关于php如何操作数组中的空值的多种方法
一,implode();
用implode()将数组输出为字符串,判断输出的字串是否为空。初看上去似乎是个不错的方法,可惜跟上一点一样,对于二维以上数组就不行了。举个例子:
- $arr= array(array(),array(),array());
- $str = implode(',',$arr);
- if(emptyempty($str)) echo "空";
- else echo "非空";
很明显$arr是个含有三个空数组的二维数组,应该也算是空的,可是输出的确是非空。判断失败。
二、count();代码如下:
- $arr= array("","","");
- echo count($arr);
三、in_array('', $arr));代码如下:
- $arr= array("d","s","");
- echo in_array('', $arr);
这个只能说明数组中有空的元素,不能证明数组是空的,很明显也不行。
四、empty();这个cpyeh觉得跟前面几种方法差不多,代码如下:
- $arr= array("","","");
- if(emptyempty($arr)) echo "空";
- else echo "非空";
- //结果还是非空
六、用strlen(),没内容的话好象长度都为1,结合上面实例我们写一个完整的删除数组空值的元素,代码如下:
- function array_remove_key($array, $keys)
- {
- $num = count($keys);
- $num_last = $num - 1;
- $this_array_0 = &$array;
- $last_key = $keys[$num_last];
- for ($i = 0; $i < $num_last; $i++)
- {
- $this_key = $keys[$i];
- $this_var_name = 'this_array_' . $i;
- $next_var_name = 'this_array_' . ($i + 1);
- if (!array_key_exists($this_key, $$this_var_name)) {
- break;
- }
- $$next_var_name = &${$this_var_name}[$this_key];
- }
- unset(${$next_var_name}[$last_key]);
- return $array;
- }
新闻热点
疑难解答