2013-10-14 81 views
0

多維數組我有一個PHP陣列如下:分裂在PHP

function partition(Array $list, $p) { 
    $listlen = count($list); 
    $partlen = floor($listlen/$p); 
    $partrem = $listlen % $p; 
    $partition = array(); 
    $mark = 0; 
    for($px = 0; $px < $p; $px ++) { 
     $incr = ($px < $partrem) ? $partlen + 1 : $partlen; 
     $partition[$px] = array_slice($list, $mark, $incr); 
     $mark += $incr; 
    } 
    return $partition; 
} 
$partitioned = partition($array , 2); 

現在使用:

$array = array("one" => "is one" , "two" => "is two" , "three" => "is three", "four" => "is four" , "five" => "is five" , "six" => "is six" , "seven" => "is seven" , "eight" => "is eight" , "nine" => "is nine" , "ten" => "is ten"); 

分割這個數組分成兩組即5個元件,使用以下的方法後這個分區陣列我使用以下代碼:

$totalArrays = count($partitioned); 
for($pb=0; $pb < $totalArrays; $pb++){ 
    print_r($partitioned[$pb]); 

} 

上面print_r($partitioned[$pb]);輸出2個數組。

這顯示了兩個數組的內容作爲鍵和值,我真正想要實現的是,我想將第一個數組的元素保存到一個名爲「First.txt」和「Second.txt」的文件中第二,名稱並不重要,它們可以被編號,但重要的是分區,例如,如果有10個分區,則每個分區將其元素保存到其自己的文件中。

我有一些解決方案,但他們沒有按預期工作,所以我在這裏要求您的解決方案。

謝謝。

回答

5

發現array_chunk()

$result = array_chunk($source, 5); 

,如果你想保留鍵,然後指定第三個參數:

$result = array_chunk($source, 5, true); 

編輯因爲你需要引導有關編寫這文件,我將提供提示:

$files = ['One.txt', 'Two.txt', 'Three.txt']; //fill this as you need 
foreach(array_chunk($source, 5, true) as $i=>$partition) 
{ 
    //write i-th partition to file with i-th name 
    writePartition($files[$i], $partition); 
} 
+0

這似乎並沒有預留鑰匙 按照要求。像「一:一個」,「兩個:兩個」等等。 – Ahsan

+0

請不要只讀我的代碼,但也請鏈接。這個函數_擁有第三個參數_,它指向保存 –

+0

的密鑰,我可以看到保留密鑰。對於那個很抱歉。 好的這裏是事情: 這將數組拆分爲5個數組,我真正想要的是,假設有一個數組中有30個項目,我想每個分區10個項目比每個分區將其內容保存到一個文件,保存過程很簡單,但主要的問題是如何以不同的方式訪問每個分區。 – Ahsan