2014-08-28 254 views
1

我有一个充满数据库记录的数组。它可能有很多元素或很少,它会定期变化。PHP:如何将数组拆分为2个部分?

我需要将数组拆分成两个相等的部分。原因是我然后将这些数组传递给Laravel视图并将它们显示在单独的列中。

这里是被拉到DB记录:

$books = Book::where('unitcode', '=', $unitcode['unitcode'])->get();

如果拉式的作品,然后我运行此:

return View::make('showbooks') 
->with('books', $books); 

我想要做的就是通过$books1$books2这实际上是$books分成2部分。

关于如何做到这一点的任何想法?谢谢

+0

'array_chunk()' – 2014-08-28 03:43:48

+0

@scrowler请你能发表一个关于它的用途的答案吗?我对此很新,并且无法找到数组的长度然后将其大块。 – KriiV 2014-08-28 03:45:12

+0

'$ books = array_chunk($ books,count($ books)/ 2);' - 将它分成两半 – 2014-08-28 03:46:03

回答

12

这是一个衬里:

$halved = array_chunk($books, ceil(count($books)/2)); 

然后$halved[0]将包含阵列的第一半。在数组包含奇数个元素的情况下,它将总是大1个元素。当然,$halved[1]将包含数组的后半部分。

Here's a working example

+0

+1为最简单的一行方法:) – 2014-08-28 04:04:18

1

我认为这会适合你。

<?php 
    $books = array("a", "b", "c", "d", "e","f"); // assuming books is an array like this 
    $count = count($books); // total count of the array books 
    $half = $count/2; // half of the total count 
    $books1 = array_slice($books, 0, $half);  // returns first half 
    $books2 = array_slice($books, $half); // returns second half 

    print_r($books1); 
    print_r($books2); 
?> 
+1

如果'$ books'具有奇数个元素,则一个元素将被忽略......我将删除'$ books2'的第二个'$ half'参数,这样您可以从其中取出数组的其余部分'$ books1'结束了...... – 2014-08-28 03:56:16

0

我想你应该使用的计数方法,然后循环的项目,直到中间它应该是这样走的数组的长度:

<?php 
    $count = count($books);   //getting the count of $books 
    $mid = round($count/2);   //getting the mid point of $books 
    for($i = 0; $i < $count ; $i++){ //looping through the indexes 
     if($i <= mid - 1){   //Checking the position of $i and adding the value 
      $books1[] = $books[$i]; 
     }else{ 
      $books2[] = $books[$i]; 
     } 
    } 
?>