求一个函数的思路 我想写这样一个函数,他的参数是某一个数组($arr1)的键值(无限深度),函数的任务是:1.根据参数获取 $arr1 中的值2.再把 $arr1 的值加在 $arr2 后,各键保持一致请问无何写,比较合理呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请楼主举个实例,这样大家很好理解 。例如:$arr1 = xxx$arr2 = yyy拼接后得到 $arr3 = zzz看见无限深度,那明摆着让人用递归了。 不好意思...我的问题!这个确实不好表达,那我把自己写了一半的代码给大家看下,大家就明白了...$arr1 = array( 'key1' => array( 'key11' => array( 'key111' => 'val111')), 'key2' => array( 'key21' => 'val21')); /** * 把 arr1 的值移到 arr2,且键位一样 */function example(){ global $arr1; $arr2 = array(); $tmp = $arr1; // 临时变量 // 获取参数,即 $arr1 数组的 key $args = func_get_args(); // 根据参数获取 $arr1 的值 foreach ($args as $arg) { $tmp = $tmp[$arg]; } // 把 $tmp 放到 $arr2 里,并且键和 $arr1 一样 // 不知道怎么写...} 也可以$arr2 = &$arr1;看你需求了 不对,这样把 $arr1 所有值都赋值给了 $arr2,我再举个例子:example(key1,key11),把 $arr1['key1']['key2']赋值$arr2['key1']['key2']example(key1),把 $arr1['key1']赋给$arr2['key1'] $arr2['key1']['key2'] = $arr1['key1']['key2'];$arr2['key1'] = $arr1['key1'];lz你到底是啥需求啊 你想遍历一棵树吗? PIGer920 你没理解,因为函数参数是不固定的,你这么写是不行的.example(key1,key11),把 $arr1['key1']['key2']赋值$arr2['key1']['key2']example(key1), 把 $arr1['key1']赋给$arr2['key1']我的需求就要 example 这么一个函数! example()函数的参数是不定长,功能和直接赋值没区别,不过我需要这么一个函数...大家都看不懂吗?我表达有这么差吗......... 说到底不就2个数组合并嘛?$a=$a+$b;或array_merge这两种方法有区别,你看看那个对的.再看看array_merge_recursive 对不对.老实我也没懂你的意思,你自己去看下. 你example里面的参数是你自己给定的,你既然可以给定这个参数,为什么不直接赋值?难道你想遍历一遍数组,等数组的key与你给定的参数相等的时候再赋值吗? 不是 array_merge(),这函数我知道的....请大家好好看看我提供的线索,想想,应该能明白的,我觉得挺清楚的 <?php $a=$b=array(); $a[k1][k11]='a'; $a[k2][k22]='aa'; function fz(){ global $a,$b; $args=func_get_args(); $at=$a; $bt=&$b; foreach($args as $arg){ $bt[$arg]=array(); $bt=&$bt[$arg]; $at=$at[$arg]; } $bt=$at; } fz('k1','k11'); print_r($b); fz('k2'); print_r($b);?> 功能不一定完整,但是应该是对的. <?php $arr1 = array( 'key1' => array( 'key11' => array( 'key111' => 'val111')), 'key2' => array( 'key21' => 'val21')); /** * 把 arr1 的值移到 arr2,且键位一样 */function example($key){ global $arr1; $arr2 = array(); $tmp = $arr1; // 临时变量 // 获取参数,即 $arr1 数组的 key //$args = func_get_args(); // 根据参数获取 $arr1 的值 foreach ($key as $arg) { $arr2[$arg] = $tmp[$arg]; } // 把 $tmp 放到 $arr2 里,并且键和 $arr1 一样 // 不知道怎么写...}$key=array('key2','key1');//example()函数的参数是不定长example($key) ; ?> Fatal error: Call to undefined function oci_connect() php正文识别是什么原理算法呢? 想用php工作都得学会哪些东西 求助关于js的一个问题 代码错误,请教 建了一个PHP的学习群,,大家都来讨论蛮。见者有分。 为什么数值可以插入,而变量不能??没有人能解决? 【救】PHP生成HTML页面后出现部分字符乱码,如何解决??? 在申请的php主页空间里ACCESS算是数据库空间还是主页空间? uploadify 上传问题 学php 在电脑上安装总是安装不好 高手帮忙 php判断$_GET[],没有想象中的简单。大家来看看。
例如:
$arr1 = xxx
$arr2 = yyy
拼接后得到 $arr3 = zzz看见无限深度,那明摆着让人用递归了。
$arr1 = array(
'key1' => array(
'key11' => array(
'key111' => 'val111')),
'key2' => array(
'key21' => 'val21'));
/**
* 把 arr1 的值移到 arr2,且键位一样
*/
function example()
{
global $arr1;
$arr2 = array();
$tmp = $arr1; // 临时变量
// 获取参数,即 $arr1 数组的 key
$args = func_get_args();
// 根据参数获取 $arr1 的值
foreach ($args as $arg)
{
$tmp = $tmp[$arg];
}
// 把 $tmp 放到 $arr2 里,并且键和 $arr1 一样
// 不知道怎么写...
}
看你需求了
$arr2['key1'] = $arr1['key1'];lz你到底是啥需求啊
你想遍历一棵树吗?
example(key1,key11),把 $arr1['key1']['key2']赋值$arr2['key1']['key2']example(key1), 把 $arr1['key1']赋给$arr2['key1']我的需求就要 example 这么一个函数!
$a=$a+$b;或array_merge
这两种方法有区别,你看看那个对的.
再看看array_merge_recursive 对不对.老实我也没懂你的意思,你自己去看下.
<?php
$a=$b=array();
$a[k1][k11]='a';
$a[k2][k22]='aa';
function fz(){
global $a,$b;
$args=func_get_args();
$at=$a;
$bt=&$b;
foreach($args as $arg){
$bt[$arg]=array();
$bt=&$bt[$arg];
$at=$at[$arg];
}
$bt=$at;
}
fz('k1','k11');
print_r($b);
fz('k2');
print_r($b);
?>
功能不一定完整,但是应该是对的.
<?php
$arr1 = array(
'key1' => array(
'key11' => array(
'key111' => 'val111')),
'key2' => array(
'key21' => 'val21'));
/**
* 把 arr1 的值移到 arr2,且键位一样
*/
function example($key)
{
global $arr1;
$arr2 = array();
$tmp = $arr1; // 临时变量
// 获取参数,即 $arr1 数组的 key
//$args = func_get_args();
// 根据参数获取 $arr1 的值
foreach ($key as $arg)
{
$arr2[$arg] = $tmp[$arg];
}
// 把 $tmp 放到 $arr2 里,并且键和 $arr1 一样
// 不知道怎么写...
}
$key=array('key2','key1');//example()函数的参数是不定长
example($key) ;
?>