跪求php 多维数组操作的问题,哪位好心人帮帮忙

number123456 2010-07-14 12:11:10
数组
$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"
请问要怎么来实现啊。
...全文
190 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyzy_yy_pm 2010-07-14
  • 打赏
  • 举报
回复
$d = array("a","ac","ac1");
来改变
$a["a"]["ac"]["ac1"] 的值,原来是"d",我要改成"c"

$a[$d[0]][$d[1]][$d[2]] = 'c';
number123456 2010-07-14
  • 打赏
  • 举报
回复
对不起,楼上的,我说过,$d变量是不因定的,也就是说,有多少个key是未知的,只能知道他的格式是一维数组。
xingworld 2010-07-14
  • 打赏
  • 举报
回复

if ( isset( $a[ $d[0] ][ $d[1] ][ $d[2] ] ) )
{
$a[ $d[0] ][ $d[1] ][ $d[2] ] = 'c';
}
number123456 2010-07-14
  • 打赏
  • 举报
回复
楼不起,我没有说清楚
$d = array("a","ac","ac1");
这是个不定数量的组组,有可能是
$d = array("a");

$d = array("a","ac");
而且还有
$d = array("a","ad");这种可能,
就是说在$a["a"]中没有ad这一索引,那就默认把$a["a"]改掉


amani11 2010-07-14
  • 打赏
  • 举报
回复


$d = array("a","ac","ac1");
if($a[$d[0]][$d[1]][$d[2]] == 'd')
{
$a[$d[0]][$d[1]][$d[2]] = 'c';
}

CunningBoy 2010-07-14
  • 打赏
  • 举报
回复
$a[$d[0]][$d[1]][$d[2]] = "c";
number123456 2010-07-14
  • 打赏
  • 举报
回复
我换别的方法去做了,谢谢大家
zhang6464 2010-07-14
  • 打赏
  • 举报
回复
感觉不该出错啊。。
[Quote=引用 10 楼 number123456 的回复:]
对不起,我刚测试了,出现错误
Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\2.0\index.php(38) : eval()'d code on line 1
[/Quote]
number123456 2010-07-14
  • 打赏
  • 举报
回复
请问用eval会不会出现啥漏洞啊?有什么方法可以防一下吗?
amani11 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 number123456 的回复:]

对不起,我刚测试了,出现错误
Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\2.0\index.php(38) : eval()'d code on line 1
[/Quote]

改成eval('$a["' . join('"]["', $d) . '"] = $c;');
max_soft 2010-07-14
  • 打赏
  • 举报
回复
我错了,再想想。。。
max_soft 2010-07-14
  • 打赏
  • 举报
回复

$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
max_soft 2010-07-14
  • 打赏
  • 举报
回复

$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';
}
number123456 2010-07-14
  • 打赏
  • 举报
回复
对不起,我刚测试了,出现错误
Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\2.0\index.php(38) : eval()'d code on line 1
number123456 2010-07-14
  • 打赏
  • 举报
回复
谢谢楼上的,你的意思是我想要的,
请问,用eval这样的操作会不会存在安全隐患?
xuzuning 2010-07-14
  • 打赏
  • 举报
回复
$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");
$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
)

)

)

number123456 2010-07-14
  • 打赏
  • 举报
回复
再重复一次,$d是不固定的,如果就只是现在这么固定的值的话很容易了,但是我要求的是一个方法
function setArray( $a,$d )
{
用什么方法能通过$d的数组来改变$a相应的值
}
本课程以2021年度大数据技术学习为背景,重点围绕Spark 3.0框架展开系统讲解。课程内容基于2020年9月官方正式发布的稳定版本Spark 3.0.1进行设计,确保所学技术紧跟行业前沿。整个教学体系划分为九个核心模块,涵盖从基础到高级的完整知识路径。 首先从Spark集群环境部署与配置入手,奠定实际操作基础。随后深入剖析Spark Core核心原理与编程模型,掌握分布式计算基础。课程进一步延伸至实时数据处理领域,系统讲解Spark Streaming流式计算框架及其应用场景。 在数据查询与分析部分,重点介绍Spark SQL模块,学习结构化数据处理方法。同时结合Structured Streaming技术,探讨现代流批一体架构的实现方式。通过综合实战案例,演示如何将各模块知识融会贯通,解决复杂业务场景中的数据处理问题。 为适应多样化开发需求,课程专门设置多语言编程章节,展示Scala、Python、Java等不同语言在Spark生态中的开发模式。针对Spark 3.0版本革新,详细解读其在性能优化、API改进及功能增强方面的最新特性。最后部分聚焦系统性能调优方法论,包括资源配置、执行计划优化等进阶内容,全面提升分布式系统运维能力。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【GA-ELM预测】基于遗传算法优化极限学习机的单维时间序列预测研究(Matlab代码实现)内容概要:本文研究基于遗传算法(GA)优化极限学习机(ELM)的单维时间序列预测方法,提出了一种结合智能优化算法与快速学习模型的预测框架。通过遗传算法优化ELM的关键参数(如输入权重和偏置),克服传统ELM随机赋值带来的不稳定性和精度局限,提升模型泛化能力与预测准确性。文中以Matlab代码实现整个算法流程,涵盖数据预处理、模型训练、参数优化及结果可视化等环节,适用于风电、负荷、交通流等单变量时间序列的短期预测场景。; 适合人群:具备一定Matlab编程基础,熟悉基本机器学习模型(如神经网络)的高校研究生、科研人员及工程技术人员,尤其适合从事时间序列预测、智能算法优化等相关领域的研究人员; 使用场景及目标:①解决传统ELM模型因随机初始化导致的性能波动问题;②实现高精度单变量时间序列预测,应用于能源、交通、金融等领域;③为智能优化算法与浅层神经网络结合提供可复现的技术方案; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注遗传算法的编码方式、适应度函数设计以及ELM参数优化过程,通过调整种群规模、交叉变异概率等参数深入理解算法性能影响机制,并尝试将其迁移至其他预测任务中验证有效性。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧