PHP:如何将数组分成两部分?
我有一个满是数据库记录的数组。它可以是成堆的元素,也可以是很少的元素,它会有规律地变化 我需要把数组分成两个相等的部分。原因是我将这些数组传递给一个Laravel视图,并将它们显示到单独的列中 以下是正在提取的DB记录:PHP:如何将数组分成两部分?,php,arrays,laravel,Php,Arrays,Laravel,我有一个满是数据库记录的数组。它可以是成堆的元素,也可以是很少的元素,它会有规律地变化 我需要把数组分成两个相等的部分。原因是我将这些数组传递给一个Laravel视图,并将它们显示到单独的列中 以下是正在提取的DB记录: $books=Book::where('unitcode','=',$unitcode['unitcode'])->get() 如果拉动有效,那么我将运行以下命令: return View::make('showbooks') ->with('books', $books
$books=Book::where('unitcode','=',$unitcode['unitcode'])->get()代码>
如果拉动有效,那么我将运行以下命令:
return View::make('showbooks')
->with('books', $books);
我要做的是传递$books1
和$books2
,这实际上是$books
分为两部分
有什么办法可以帮你吗?谢谢我想这对你有用
<?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);
?>
这是一个单行程序:
$halved = array_chunk($books, ceil(count($books)/2));
然后,$halved[0]
将包含数组的前半部分。如果数组包含奇数个元素,则它将始终大1个元素。当然,$halved[1]
将包含数组的后半部分
我认为您应该使用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];
}
}
?>
要详细说明客户的答案:
由于您正在使用,这里有一个更流畅的方法来实现这一点:
$books = collect($books);
$halved = $books->split(ceil($books->count()/2))->toArray();
// Result: [[a, b, c], [d, e, f]]
查看Laravel的各种方法,以获得更有效的方法来流畅地操作阵列。使用:
$collection->chunk(2);
见:
@scrowler您能发布一个关于它使用的答案吗?我对这个很陌生,很难找到数组的长度,然后将其分块。$books=array\u chunk($books,count($books)/2)代码>-将其拆分为half@scrowler谢谢获取另一半是否简单到:$books=array\u chunk($books,count($books)/2,count($books);
?$books将包含一个带有两个键的数组,每个键将包含数组的一半。您还可以执行列表($books1,$books2)=array\u chunk($books,count($books)/2)
将它们放入变量如果您使用数组_chunk
并且它是奇数个元素,它将创建一个包含3个数组的数组,而不是每个数组中包含+1个元素的2个数组。如果$books
的元素数为奇数,则将保留一个元素…我将删除的第2个$half
参数$books2
,这样您就可以从$books1
结束的位置获取阵列的其余部分。。。