我有一个充满DB记录的数组。它可能是很多元素或很少,它会定期更改。
我需要将数组分成两个相等的部分。原因是我将这些数组传递给Laravel视图并将它们显示在不同的列中。
以下是提取的数据库记录:
$books = Book::where('unitcode', '=', $unitcode['unitcode'])->get();
如果拉动工作,那么我正在运行:
return View::make('showbooks')
->with('books', $books);
我想要做的是将$books1
和$books2
传递给实际$books
分为两部分。
关于我如何做到这一点的任何想法?感谢
答案 0 :(得分:15)
这是一个班轮:
$halved = array_chunk($books, ceil(count($books)/2));
然后$halved[0]
将包含数组的前半部分。如果数组包含奇数个元素,它将总是大1个元素。当然,$halved[1]
将包含数组的后半部分。
答案 1 :(得分: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);
?>
答案 2 :(得分:0)
我认为您应该使用count方法获取数组的长度,然后将项目循环到中间,它应该如下所示:
<?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];
}
}
?>
答案 3 :(得分:0)
扩展Ohgodwhy的答案:
由于您正在使用laravel,因此可以采用更流畅的方式实现此目标:
$books = collect($books);
$halved = $books->split(ceil($books->count()/2))->toArray();
// Result: [[a, b, c], [d, e, f]]
查看Laravel的各种Collection Methods,了解更多可用于流畅操作数组的方法。
答案 4 :(得分:0)