[英]How to sort and group datas in a php array where some datas are repeated?
[英]How to sort an array of datas for csv column using php?
我正在使用php创建一个.csv
下载文件。 我需要按first_name
按字母顺序对数据进行排序,所以我尝试使用asort('$user->first_name');
它结束了一个错误。 我会展示整个代码,也许你们可以帮助我。
public function getTransportationReport()
{
header...
$file = fopen( 'php://output', 'w' );
fputcsv( $file, array('Departure Location', 'First Name', 'Last Name', 'Group Name', 'Unit', 'Unit Number', 'Phone Number', 'Email Address') );
$rowed = array();
$auth_event = \App\Group::find( session()->get( 'event-id' ) );
$bookings = \App\EventBookings::where('group_id', '=', $auth_event->group_id)->where('chalet_id', '!=', 0)->get();
if ( $bookings->count() ) {
foreach ($bookings as $booking) {
$event_group = \App\EventGroup::find($booking->eg_id);
if ( $event_group ) {
$chalet = \App\Chalet::find($booking->chalet_id);
if ( $chalet ) {
$transpoCharges = \App\EventBookingCharges::where('booking_id', '=', $booking->booking_id)->where('charge_key', 'LIKE', 'transportation')->get();
if ( $transpoCharges->count() ) {
foreach ($transpoCharges as $transpoCharge) {
$jdecode = json_decode($transpoCharge->json);
$user = \App\User::find($transpoCharge->user_id);
$paidCharges = \App\EventBookingCharges::where('booking_id', '=', $booking->booking_id)->where('status','=',1)->where('user_id','=',$user->user_id)->sum('amount');
if ( $user ) {
$rowed[] = array(
$jdecode->location,
$user->first_name,
$user->last_name,
$event_group->name,
$chalet->name,
$chalet->unit_no,
$user->phone,
$user->email,
);
}
}
}
}
}
}
$data = $rowed;
foreach ($data as $row) {
fputcsv($file, $row);
}
}
exit();
if ( Auth::user()->user_level == 2 ) {
return Redirect::to( $auth_event->alias . '/app/etranspo' );
} else {
return Redirect::to( '/app/' . $auth_event->alias . '/etranspo' );
}
}
如果我单击按钮它将只显示file not found
但如果我右键单击该按钮并选择save as
因为它将下载.csv
文件,错误说明error ReportsController.php line 490
[asort($ user-> first_name) ); 是]和Indirect modification of overloaded property App\\User::$first_name has no effect
您想要像这样排序数组数据:
$data = $rowed;
// sort the data by a user specified function
uasort($data, function($a, $b) {
// compare by first name (index 1 in the array)
return strcmp($a[1], $b[1]);
});
foreach ($data as $row) {
fputcsv($file, $row);
}
你可以在这里找到关于uasort的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.