2013-10-14 80 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