PHP连接2数组
我有两个数组PHP连接2数组,php,arrays,Php,Arrays,我有两个数组 $array1 = array( ['2013-05-01']=>'test', ['2013-05-02']=>'testing', ['2013-05-03']=>'working', ['2013-05-04']=>'future test'); $array2 = array( ['2013-05-01']=>'1', ['2013-05-02']=>'done', ['2013-
$array1 = array(
['2013-05-01']=>'test',
['2013-05-02']=>'testing',
['2013-05-03']=>'working',
['2013-05-04']=>'future test');
$array2 = array(
['2013-05-01']=>'1',
['2013-05-02']=>'done',
['2013-05-03']=>'code',
['2013-05-05']=>'release');
我想加入这些数组,以便输出
$result = array(
['2013-05-01']=>'test 1',
['2013-05-02']=>'testing 2',
['2013-05-03']=>'working code',
['2013-05-04']=>'future test',
['2013-05-05']=>'release')
我尝试了$result=$array1+array2;array_merge(),array_combine()无一给出正确的结果
您能帮我一下吗。这里有一个关于这个问题的单行解决方案:
foreach($array2 AS $key => $value)
{
$array1[$key] = isset($array1[$key]) ? $array1[$key] . " " . $value : $value;
}
$array1 = array(
'2013-05-01'=>'test',
'2013-05-02'=>'testing',
'2013-05-03'=>'working',
'2013-05-04'=>'future test');
$array2 = array(
'2013-05-01'=>'1',
'2013-05-02'=>'done',
'2013-05-03'=>'code',
'2013-05-05'=>'release');
$r = array_map(function($i) {
return !is_array($i) ? $i : implode(' ', $i);
}, array_merge_recursive($array1, $array2));
var_dump($r);
在线演示:以下是该问题的单线解决方案:
$array1 = array(
'2013-05-01'=>'test',
'2013-05-02'=>'testing',
'2013-05-03'=>'working',
'2013-05-04'=>'future test');
$array2 = array(
'2013-05-01'=>'1',
'2013-05-02'=>'done',
'2013-05-03'=>'code',
'2013-05-05'=>'release');
$r = array_map(function($i) {
return !is_array($i) ? $i : implode(' ', $i);
}, array_merge_recursive($array1, $array2));
var_dump($r);
在线演示:您可以使用:
这将根据数组键修改$result
(从$array1
复制)并使用从$array2
查看的值。您可以使用:
这将根据数组键修改
$result
(从$array1
复制)并使用从$array2
查看的值。最好为其编写函数,并将其保存在工具箱中:
function merge_array() {
$merged = array();
$arrays = func_get_args();
if ($arrays) {
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if (isset($merged[$key])) {
$merged[$key] .= ' ' . $value;
}
else {
$merged[$key] = $value;
}
}
}
}
return $merged;
}
现在将$array1
和$array2
传递给它:
$result = merge_array($array1, $array2);
你会得到这个结果:
// Array
// (
// [2013-05-01] => test 1
// [2013-05-02] => testing done
// [2013-05-03] => working code
// [2013-05-04] => future test
// [2013-05-05] => release
// )
请注意,如果需要,此函数可以接受两个以上的数组
在线查看[!]
function merge_array() {
$merged = array();
$arrays = func_get_args();
if ($arrays) {
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if (isset($merged[$key])) {
$merged[$key] .= ' ' . $value;
}
else {
$merged[$key] = $value;
}
}
}
}
return $merged;
}
现在将$array1
和$array2
传递给它:
$result = merge_array($array1, $array2);
你会得到这个结果:
// Array
// (
// [2013-05-01] => test 1
// [2013-05-02] => testing done
// [2013-05-03] => working code
// [2013-05-04] => future test
// [2013-05-05] => release
// )
请注意,如果需要,此函数可以接受两个以上的数组
在线查看[!]
function array\u join($arr1,$arr2){return array(['2013-05-01']=>'test 1',['2013-05-02']=>'test 2',['2013-05-03']=>“工作代码”);}
-只是搞乱了;)您给定的代码甚至无法正确编译。您需要编写自己的代码来完成此操作。没有内置函数。你是说使用foreach循环吗?人们期望PHP在每一个场景中都有一个内置函数,这让我很惊讶,一个新手程序员应该能够毫不费力地解决这个问题。function array\u join($arr1,$arr2){return array(['2013-05-01']=>'test 1',['2013-05-02']=>'test 2',['2013-05-03']=>“工作代码”);}
-只是搞乱了;)您给定的代码甚至不能正确编译。错误处理是为了什么?$array1不包含$array2键的情况已经得到处理。我建议使用isset()
而不是empty()
。这是一个很好的建议。如果$array1将包含一个“0”作为值,它将以这种方式被删除。@zerkms有很多empty()
调用吗:)
空($array1[$key])
建议将设置为isset($array1[$key])
。这可能会产生修改$array1
的意外副作用。错误处理是为了什么?$array1不包含$array2键的情况已经得到处理。我建议使用isset()
而不是empty()
。这是一个很好的建议。如果$array1将包含一个“0”作为值,它将以这种方式被删除。@zerkms有很多empty()
调用吗:)
空($array1[$key])
建议设置为isset($array1[$key])
。这可能会产生修改$array1
的意外副作用。该死的,我花了5分钟在蹩脚的iPad软键上,只是为了让一个真正键盘上的懒汉揍我一顿。@Niels Keurentjes:“只要有一个真正的键盘懒汉就把我揍一顿”——“懒汉"? 这是个玩笑吗?@NielsKeurentjes对于在iPad上键入答案的人来说,谁是懒汉是有争议的=p@Jack你试过吗?所有的卷发和所有的东西都隐藏在每个键盘后面,就像5个按键一样,你必须处理苹果的资本化想法:PDammit我花了5分钟在蹩脚的iPad软键上打字,只是为了让一个真正键盘的懒汉打败我。@Niels Keurentjes:“就为了让一个真正的键盘懒汉打败我”——“懒汉”?这是个玩笑吗?@NielsKeurentjes对于在iPad上键入答案的人来说,谁是懒汉是有争议的=p@Jack你试过吗?所有的卷发和所有的东西都隐藏在后面,每个都有5个按键,你必须处理苹果的资本化理念:P