网上看到一段删除数组中某一元素的值的函数是这样写的: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)) //这里当循环第二次的时候$$this_var_name是一个字符串
{
break;
}
$$next_var_name = &${$this_var_name}[$this_key];
}
unset(${$next_var_name}[$last_key]);
return $array;
}
在第一次循环中$$next_var_name=&${$this_var_name}[$this_key];已经将$this_array_1给赋值成了数组中一个元素,那么第二次循环判断array_key_exists($this_key, $$this_var_name)的时候,$$this_var_name就是$this_array_1就不是一个数组了,而是一个数值啊,我也试过了确实报错了。这个函数的整体思路也不太懂,麻烦给为给我讲一下,谢谢!数组函数
{
$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)) //这里当循环第二次的时候$$this_var_name是一个字符串
{
break;
}
$$next_var_name = &${$this_var_name}[$this_key];
}
unset(${$next_var_name}[$last_key]);
return $array;
}
在第一次循环中$$next_var_name=&${$this_var_name}[$this_key];已经将$this_array_1给赋值成了数组中一个元素,那么第二次循环判断array_key_exists($this_key, $$this_var_name)的时候,$$this_var_name就是$this_array_1就不是一个数组了,而是一个数值啊,我也试过了确实报错了。这个函数的整体思路也不太懂,麻烦给为给我讲一下,谢谢!数组函数
解决方案 »
- 正则限制位数,只能匹配5位的数字,字母。
- mysql的一个表在phpmyadmin中提示in use,查看"结构"时提示Incorrect key file for table
- PHP在登录系统中,不管输入任何登录子页网址,都必须先登陆主页
- 关于下载次数的统计
- 有人对CRYPT函数熟悉吗?
- 新手问下,这是人气最好的php论坛吗?
- 刚学了点Google排名的知识,为公司做了个网站,大家看看,顺便撒分...
- php数组的白菜问题
- 通过session传递对象的问题
- 我想自己做一个wap网站,服务器放在家里,请问我是不是设置一下MIME,手机就可以访问了?
- php頁面一次執行兩條以上mysql指令
- 求一个完整的无限分类的树形类,,,
这个函数的功能应该是删去 $array 中键包含在 $keys 中的所有元素
就像这样
$a = array(1,2,3,4,5);
$b = array(2,4);
print_r(array_diff_key($a, array_flip($b)));
//Array ( [0] => 1 [1] => 2 [3] => 4 )