合并2个数组数据

时间:2012-03-20 20:19:54

标签: php

我想使用php做一些像bellow:

$turl=array(trim($params->get('c2')));
$tname=array(trim($params->get('cn2')));

并希望每个$turl显示每个$tname

我试过这样:

$result=array_combine($turl,$tname);
print_r($result);

但结果为:

Array ( [http://184.107.144.218:8282/,http://184.107.144.218:8082/] => ABC Radio,AHH Radio )

但我想这样:

Array ( [http://184.107.144.218:8282/=> ABC Radio,
http://184.107.144.218:8082/=> AHH Radio )

提前致谢

1 个答案:

答案 0 :(得分:0)

也许你想使用类似的代码:

$turl  = explode(',',trim($params->get('c2')));
$tname = explode(',',trim($params->get('cn2')));

$result=array_combine($turl,$tname);
print_r($result);

错误似乎是在$ turl和$ tname数组创建中,因为数组合并应该按预期工作

显然我会添加几个检查,例如,让两个数组的大小相同吗?

<强> 附录
comment中,如果使用参数'c2'和'cn2'调用,则会给我一个$params->get返回的样本。

$params->get('c2')="hoicoimasti.com,google.com" 
$params->get('cn2')="hoicoi,google".

我给你的示例代码做了所需要的,或者是我认为你想要获得的代码。具有不同结果的不同代码是:

$turl  = explode(',',trim($params->get('c2')));
$tname = explode(',',trim($params->get('cn2')));

$result=array_map(function($x,$y){return $x.','.$y;},$turl,$tname);
print_r($result);

或者,如果您想获得单个字符串:

$result=join(',',array_map(function($x,$y){return $x.'=>'.$y;},$turl,$tname));
print_r($result);

您可以修改上一个示例之一的任何所需结果。

要将结果包含在一个选项中,您需要稍微改变array_map用户函数:

$result=join("\n",array_map(
    function($x,$y){
        return "<option>$x=>$y</option>";
    },
    $turl,
    $tname
));
print_r($result);

PHP&lt; 5.3版本
将此函数声明放在全局范围内的某处

function formatOption($x,$y){
    return "<option>$x=>$y</option>";
};

然后您的代码将变为:

$result=join("\n",array_map( 'formatOption', $turl, $tname));
print_r($result);

如果可能的话,我不会使用像 formatOption 这样的函数来混淆全局命名空间, 但是当匿名功能不可用时

<强>参考