2016-11-23 67 views
0

我想分割基於另一個數組值的多維數組像array_chunk($multi_array, array(1,3,7))之類的東西。在這裏管理找到與此相關的東西array_chunk_multi。只是它不適用於多維數組。目前它正確地分裂它們,只是我得到NULL的所有值。基於另一個數組的array_chunk分割多維數組

PHP

function array_chunk_array(array $values, array $sizes) 
{ 
    $results = []; 
    foreach ($sizes as $size) { 
     $current = []; 
     while (count($values) > 0 && count($current) < $size) { 
      $current[] = array_unshift($values); 
     } 
     $results[] = $current; 
    } 
    return $results; 
} 

$input_sub_arr = range('1', '6'); 
$input_sub_array = array(); 
foreach ($input_sub_arr as $answer) { 
    $input_sub_array[] = 'answer-'.$answer; 
} 
$input_sub_answers = array(); 
foreach ($input_sub_array as $input_sub_answer) { 
    $input_sub_answers[$input_sub_answer] = array('attributes' => array('correct')); 
} 
//var_dump($input_sub_answers); 
$new_answer = array_chunk_array($input_sub_answers, array(4,2)); 
var_dump($new_answer); 

當前陣列

array(6) { 
    [0]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    } 
    [1]=> 
    array(2) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(1) { 

    } 
    } 
    [2]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
    [3]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
    [4]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
    [5]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
} 

預期輸出

array(4) { 
    [0]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    } 
    [1]=> 
    array(2) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(1) { 

    } 
    } 
    [2]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
    [3]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
} 
array(2) { 
    [1]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 
     ["@attributes"]=> 
     array(1) { 

     } 
    } 
    } 
    [2]=> 
    array(3) { 
    ["@attributes"]=> 
    array(2) { 

    } 
    ["answerText"]=> 
    array(2) { 

    } 
    } 
} 

電流輸出

array(2) { 
    [0]=> 
    array(4) { 
    [0]=> 
    NULL 
    [1]=> 
    NULL 
    [2]=> 
    NULL 
    [3]=> 
    NULL 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    NULL 
    [1]=> 
    NULL 
    } 
} 
+0

'array_chunk_array($ input_sub_answers,陣列(4,2));'它應該是'array_chunk($ input_sub_answers,陣列(4,2));'和'array_chunk'需要整數,但是你的參數被賦予一個數組。'array_chunk'在這裏是必須使用的? –

+0

@ChoncholMahmud我想創建一個自定義函數'array_chunk_array'接受一個數組作爲第二個參數而不是整數的版本。 – user3467855

+0

你在哪裏創建'array_chunk_array'函數?你能添加這個功能嗎? –

回答

1

真正應該被用在這裏array_splice

$vl = [1,1,1,1,2,2,3,3,3]; 
$sz = [4, 2, 3]; 
function array_chunk_array(array $values, array $sizes) 
{ 
    $result = []; 

    foreach ($sizes as $s) { 
     $result[] = array_splice($values, 0, $s); 
    } 

    return $result; 
} 

echo'<pre>',print_r(array_chunk_array($vl, $sz)),'</pre>';