簡體   English   中英

通過匹配鍵組合兩個不相等的數組

[英]Combining Two Unequal Arrays by Matching Keys

我想將下面的兩個數組合並為一個。 更具體地說,我想將第二個數組的內容添加到第一個數組中的匹配鍵中。 最終數組中的鍵應具有兩個數組的匹配鍵的內容。

Array ( 
[123456789_404045862944400] => 192 
[123456789_403274909688162] => 186 
[123456789_402735273075459] => 311 
[123456789_252948031457462] => 385 
[123456789_400606749954978] => 287 
[123456789_286755318061725] => 358 
[123456789_399687880046865] => 257 
[123456789_398332190182434] => 240 
[123456789_397768486905471] => 311 
[123456789_396907650324888] => 293 
[123456789_394850557197264] => 496 
[123456789_394121230603530] => 475 
[123456789_369757766367627] => 488 
[123456789_391602517522068] => 506 
[123456789_390848830930770] => 437 
[123456789_389975351018118] => 452 
[123456789_242486689170043] => 525 
[123456789_388151047867215] => 415 
[123456789_387476447934675] => 502 
[123456789_386620518020268] => 467 
[123456789_215937481836499] => 359 
)

Array (
[123456789_404045862944400] => 23:52 
[123456789_403274909688162] => 22:21 
[123456789_402735273075459] => 04:29 
[123456789_252948031457462] => 06:22 
[123456789_400606749954978] => 05:01 
[123456789_286755318061725] => 04:51 
[123456789_399687880046865] => 21:51 
[123456789_398395260176127] => 01:13 
[123456789_398332190182434] => 23:19 
[123456789_397768486905471] => 05:38 
[123456789_397509266931393] => 00:46 
[123456789_396907650324888] => 03:38 
[123456789_394850557197264] => 05:12 
[123456789_394121230603530] => 04:15 
[123456789_369757766367627] => 04:01 
[123456789_391602517522068] => 03:44 
[123456789_390848830930770] => 06:05 
[123456789_389975351018118] => 04:00 
[123456789_242486689170043] => 04:13 
[123456789_388151047867215] => 00:22 
[123456789_387544787927841] => 07:34 
[123456789_387476447934675] => 04:51 
[123456789_386620518020268] => 06:05 
[123456789_386504878031832] => 02:38 
[123456789_215937481836499] => 01:10 
) 

到目前為止我已經嘗試過:

$array1 = array_merge($array1, $array2);

還嘗試了類似的東西:

foreach($arr2 as $k=>$v) {
    $a[$k] = $arr1[$k];
}

但它沒有正確組合/合並數組以匹配鍵。

我也嘗試使用array_combine ,但由於它通過使用一個數組作為鍵和另一個數組作為其值來創建一個數組,所以我也無法讓它工作。

好的,所以我有兩個數據數組和一個空數組來保存新數組

$array1 = array('key1'=>'value1');
$array2 = array('key2'=>'value2');
$array3 = array();

根據鍵組合它們

foreach($array1 as $k=>$v)
{
    if(array_key_exists($k, $array2))
    {
        $array3[$k] = array($v, $array2[$k]);
    }
}

$array3 保存新數組。 如果要覆蓋原始數組,只需添加

$array1 = $array3;

如果您希望 array3 保存 array2 沒有且 array 1 確實有的單元格,那么在 foreach 中添加一個 else

else
{
    $array3[$k] = array($v, null);
}

這是為了使陣列在循環時具有均勻的形狀。

這將查看數組 1 的每個元素,檢查數組 2 中數組 1 中的每個鍵,如果存在,則在該鍵處添加一個新數組,其中包含該鍵的前兩個數組的數據。

除了@Jake 的回答之外,如果您想包含缺失項目的鍵和值。

 $attributes = array();

    if (count($columns) != count($data)) {
        foreach ($columns as $key => $value) {
            array_key_exists($key, $data) ? 
           $attributes[$value] =  $data[$key] 
           : $attributes[$value] =  "";
        }
    } else {
    //Else if arrays are equal combine using `array_combine` function
        $attributes = array_combine($columns, $data);
    }

    return  $attributes;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM