2017-05-01 42 views
-1

如何在PHP中進行以下更改?我可以將這種格式的數組分成這個嗎?

輸入:

[hiddenAllPrefered] => Array 
(
    [0] => 14477,14478,14479,14485,14486,14487 
) 

輸出應該是這樣的:

[hiddenAllPrefered] => Array 
(
    [0] => 14477,14478,14479 
    [1] => 14485,14486,14487 
) 
+1

什麼是分裂規則?按數字?閱讀PHP函數['explode()'](http://php.net/manual/en/function.explode.php),['array_chunk()'](http://php.net/manual/en /function.array-chunk.php),['implode()'](http://php.net/manual/en/function.implode.php)和['array_map()'](http:// php達網絡/手動/ EN/function.array-map.php)。結合他們你可以得到你所需要的。 – axiac

+0

規則:先分開3個逗號分隔值 –

+0

正如我所說,上述PHP函數可以完成這項工作。試試看。 – axiac

回答

0

一種可能的解決方案:

$input = array('14477,14478,14479,14485,14486,14487'); 

$output = array_map(
    function (array $a){ 
     return implode(',', $a); 
    }, 
    array_chunk(
     explode(',', $input[0]), 
     3 
    ) 
); 

從裏向外讀它:

  • explode()拆分串$input[0]使用逗號(,)作爲分隔符,並返回一個陣列;
  • array_chunk()將數組拆分成大小爲3的塊;它返回一個數組數組,每個內部數組包含3個元素(除了最後一個可以包含更少的元素外);
  • array_map()將它接收到的函數作爲它的第一個參數應用於它作爲第二個參數的數組的每個值(由array_chunk()返回的數組數組)。它返回一個數組,其值是該函數返回的值;
  • anonymous function傳遞給array_map()得到(大小3或更小的)的陣列,並使用implode()加入其元素爲一個字符串,利用逗號(,)來分隔值,並返回字符串;
  • array_map()將匿名函數返回的所有值(數組中的每個塊的一個塊)放到一個返回的新數組中。

輸出(print_r($output))看起來是這樣的:

Array 
(
    [0] => 14477,14478,14479 
    [1] => 14485,14486,14487 
) 
+0

謝謝工作很好。 –

0

嘗試以此爲樣板

function chunker($arr, $l) { 
    return array_chunk($arr, $l); 
} 
print_r(chunker($hap, 3)); 
/* 
Array 
(
    [0] => Array 
     (
      [0] => 14477 
      [1] => 14478 
      [2] => 14479 
     ) 

    [1] => Array 
     (
      [0] => 14485 
      [1] => 14486 
      [2] => 14487 
     ) 

) 
*/ 

UPDATE

php > $h = [ "14477,14478,14479,14485,14486,14487" ]; 
php > $hap = explode(",", $h[0]); 
php > print_r($hap); 
Array 
(
    [0] => 14477 
    [1] => 14478 
    [2] => 14479 
    [3] => 14485 
    [4] => 14486 
    [5] => 14487 
) 
php > print_r(chunker($hap, 3)); 
Array 
(
    [0] => Array 
     (
      [0] => 14477 
      [1] => 14478 
      [2] => 14479 
     ) 

    [1] => Array 
     (
      [0] => 14485 
      [1] => 14486 
      [2] => 14487 
     ) 

) 
php > 
+0

獲得輸出如下:數組 ( [0] =>數組 ( [0] => 15087,15088,15089,15095,15096,15097 ) ) –

+0

我說你用它作爲樣板,你應該實際做的是..好吧,我正在更新答案 - )) – marmeladze

相關問題