数组
$a = array(
"a"=>array(
"ab"=>array(
"ab1" => "d",
"ab2" => "dd",
),
"ac"=>array(
"ac1" => "d",
"ac2" => "dd",
)
),
"b" => array(
"bb"=>array(
"bb1" => "d",
"bb2" => "dd",
),
"bc"=>array(
"bc1" => "d",
"bc2" => "dd",
)
) );
我想根据数组
$d = array("a","ac","ac1");
来改变
$a["a"]["ac"]["ac1"] 的值,原来是"d",我要改成"c"
请问要怎么来实现啊。
$a = array(
"a"=>array(
"ab"=>array(
"ab1" => "d",
"ab2" => "dd",
),
"ac"=>array(
"ac1" => "d",
"ac2" => "dd",
)
),
"b" => array(
"bb"=>array(
"bb1" => "d",
"bb2" => "dd",
),
"bc"=>array(
"bc1" => "d",
"bc2" => "dd",
)
) );
我想根据数组
$d = array("a","ac","ac1");
来改变
$a["a"]["ac"]["ac1"] 的值,原来是"d",我要改成"c"
请问要怎么来实现啊。
解决方案 »
- 收藏 如何通过PHP得到此URL跳转后的URL
- Smarty 使用伪静态的时候,传递参数的时候页面为什么会乱?
- 【求真相】怎么我这个php到了服务器上就乱来了?
- PHP显示问题
- 毕业才开始接触程序,公司带我的师傅给了我出了一道关于排序的题,我写的东西总是没输出,麻烦各位进来帮我看一看。
- 如何让wamp不显示错误信息
- 怎么用PHP处理多个文件表单传送信息的问题? 急!!!
- 纯文本的格式显示
- cgi程序中有办法向使用cgi一样调用php程序吗?
- files.sql.sql是什么文件?能知道用的是哪一种数据库吗?
- PHP 打包文件 然后下载
- php: opendir($path) 如何访问网络路径?
if($a[$d[0]][$d[1]][$d[2]] == 'd')
{
$a[$d[0]][$d[1]][$d[2]] = 'c';
}
$d = array("a","ac","ac1");
这是个不定数量的组组,有可能是
$d = array("a");
或
$d = array("a","ac");
而且还有
$d = array("a","ad");这种可能,
就是说在$a["a"]中没有ad这一索引,那就默认把$a["a"]改掉
if ( isset( $a[ $d[0] ][ $d[1] ][ $d[2] ] ) )
{
$a[ $d[0] ][ $d[1] ][ $d[2] ] = 'c';
}
来改变
$a["a"]["ac"]["ac1"] 的值,原来是"d",我要改成"c"$a[$d[0]][$d[1]][$d[2]] = 'c';
function setArray( $a,$d )
{
用什么方法能通过$d的数组来改变$a相应的值
}
"a"=>array(
"ab"=>array(
"ab1" => "d",
"ab2" => "dd",
),
"ac"=>array(
"ac1" => "d",
"ac2" => "dd",
)
),
"b" => array(
"bb"=>array(
"bb1" => "d",
"bb2" => "dd",
),
"bc"=>array(
"bc1" => "d",
"bc2" => "dd",
)
) );$d = array("a","ac","ac1");
$c = 'abcd';
eval('$a[' . join('][', $d) . '] = $c;');print_r($a);Array
(
[a] => Array
(
[ab] => Array
(
[ab1] => d
[ab2] => dd
)
[ac] => Array
(
[ac1] => abcd //这里被改变了
[ac2] => dd
)
)
[b] => Array
(
[bb] => Array
(
[bb1] => d
[bb2] => dd
)
[bc] => Array
(
[bc1] => d
[bc2] => dd
)
)
)
请问,用eval这样的操作会不会存在安全隐患?
Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\2.0\index.php(38) : eval()'d code on line 1
$before_k = '';
$changed = 0;
foreach($d as $k) {
global $before_k;
if(!empty($a[$k]) && is_array($a[$k])) {
continue;
} else {
$a[$before_k] = 'c';//不知道你这个C是怎么来的
$changed = 1;
}
$before_k = $k
}
if(!$changed && $a[$before_k]) {
$a[$curent_k] = 'c';
}
$before_k = '';
$changed = 0;
foreach($d as $k) {
global $before_k;
if(!empty($a[$k]) && is_array($a[$k])) {
continue;
} else {
$a[$before_k] = 'c';//不知道你这个C是怎么来的
$changed = 1;
break;
}
$before_k = $k
}
if(!$changed && $a[$before_k]) {
$a[$curent_k] = 'c';
}
应该有个break
改成eval('$a["' . join('"]["', $d) . '"] = $c;');