2015-10-19 42 views
-1

我不擅長算法。這是我的麻煩。使用php數組算法遇到一些麻煩

我有一個數組:

$test_arr = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
    6 => 'g', 
    7 => 'h', 
    8 => 'i', 
); 

我如何用一些像這樣的算法重新排序:

$test_arr = array(
    0 => array(
    'a', 'b', 
), 
    1 => array(
    'c', 'd', 
), 
    2 => array(
    'e', 'f' 
), 
    3 => array(
    'g', 'h', 
), 
    4 => array(
    'i', 
), 
); 

提前感謝!

+4

谷歌:'PHP array_chunk()' – Rizier123

回答

1

PHP已經有一個內置功能,做同樣的工作。這是array_chunk()

試試這個:

<?php 
$test_arr = array(
0 => 'a', 
1 => 'b', 
2 => 'c', 
3 => 'd', 
4 => 'e', 
5 => 'f', 
6 => 'g', 
7 => 'h', 
8 => 'i', 
); 
var_dump(array_chunk($test_arr, 2)); 
?> 
0

這裏是您正在尋找算法:

$test_arr = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
    6 => 'g', 
    7 => 'h', 
    8 => 'i', 
); 

$tmp_array = []; 
$new_array = []; 
$i = 1; 
foreach($test_arr as $k => $v){ 
    if($i % 2 == 0){ 
     $tmp_array[] = $v; 
     $new_array[] = $tmp_array; 
     $tmp_array = []; 
    }else{ 
     $tmp_array[] = $v; 
    } 

    $i++; 
} 
if(count($tmp_array) > 0){ 
    $new_array[] = $tmp_array; 
} 


echo '<pre>'; 
print_r($new_array); 
+0

雖然此代碼段可以解決的問題,[包括一個解釋](http://meta.stackexchange.com/問題/ 114762 /解釋 - 完全基於代碼的答案)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – Rizier123

0

該解決方案通過一個循環來排列,並保存到一個新的數組當前和未來值僅在當前關鍵是0或偶數。

<?php 
$test_arr = array(
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
    3 => 'd', 
    4 => 'e', 
    5 => 'f', 
    6 => 'g', 
    7 => 'h', 
    8 => 'i', 
); 
$newarray = array(); 
foreach($test_arr as $key => $value){ 
    if (($key == 0) || (($key % 2) == 0)){ 
     if(isset($test_arr[($key + 1)])) { $next = $test_arr[($key + 1)]; } else { $next = ''; } 
     $newarray[] = array($value, $next); 
    } 
} 
echo print_r($newarray, true); 
?> 

結果

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => b 
     ) 

    [1] => Array 
     (
      [0] => c 
      [1] => d 
     ) 

    [2] => Array 
     (
      [0] => e 
      [1] => f 
     ) 

    [3] => Array 
     (
      [0] => g 
      [1] => h 
     ) 

    [4] => Array 
     (
      [0] => i 
      [1] => 
     ) 

)