簡體   English   中英

將兩個數組合並為一個大塊

[英]Merge two array into one into chunks

我有以下數組

$arr1 = array( 
           array('ctype'=>'fr', 'type'=>'fr'), 
           array('ctype'=>'fasdf', 'type'=>'fr'), 
           array('ctype'=>'fdfdf', 'type'=>'fr'), 
           array('ctype'=>'fhjdf', 'type'=>'fr'), 
           array('ctype'=>'fsf', 'type'=>'fr'), 
           array('ctype'=>'vndf', 'type'=>'fr'), 
           array('ctype'=>'fnsdf', 'type'=>'fr')
);

$arr2 = array( 
          array('ctype'=>'fr', 'type'=>'ln'), 
          array('ctype'=>'fasdf', 'type'=>'ln'), 
          array('ctype'=>'fayf', 'type'=>'ln'), 
          array('ctype'=>'fauf', 'type'=>'ln')
);

我想將此數組合並為一個數組,但合並為兩個不同的塊,例如

$main_arr = array(
              array('ctype'=>'fr', 'type'=>'fr'), 
              array('ctype'=>'fasdf', 'type'=>'fr'), 
              array('ctype'=>'fr', 'type'=>'ln'), 
              array('ctype'=>'fasdf', 'type'=>'ln'), 
              array('ctype'=>'fdfdf', 'type'=>'fr'), 
              array('ctype'=>'fhjdf', 'type'=>'fr'), 
              array('ctype'=>'fayf', 'type'=>'ln'), 
              array('ctype'=>'fauf', 'type'=>'ln')
              array('ctype'=>'fsf', 'type'=>'fr'), 
              array('ctype'=>'vndf', 'type'=>'fr'), 
              array('ctype'=>'fnsdf', 'type'=>'fr')
 );

如您所見,我想從arr1中獲取2個值,然后從arr2中獲取2個,如果像示例$arr2這樣不存在該值,則從$arr1獲取並推送這些值。 我用array_chunksarray_map嘗試了array_chunks ,但沒有得到預期的結果。

這是我嘗試的:

// Divide foursome into chunks
$fr = array_chunk($arr1, 2);
$ln = array_chunk($arr2, 2);

// Can't provide the expected result
$main = array_map(NULL, $fr, $ln);

我認為您正在追求這樣的事情:

function combine($a1, $a2) {
    if (is_array($a2) && count($a2)) {
        $a1 = array_merge($a1, $a2);
    }
    return $a1;
}

$m = array_map('combine', $fr, $ln);

$main = array();
foreach ($m as $idx => $ars) {
    $main = array_merge($main, $ars);
}

首先要注意的是,傳遞給array_map()的數組數必須與回調函數采用的參數數匹配。

要注意的第二點是,“分塊”將新級別添加到數組中,因此您需要某種方式來“展平”組合兩個“分塊”數組的結果。

暫無
暫無

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

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