php 模拟mysql group by分组
无详细内容 无 ?php$arrs = array( array('id'=3,'year'=2014,'month'=6,'day'=2,'name'='test1','money'=10233,'rebate'=111), array('id'=7,'year'=2017,'month'=6,'day'=2,'name'='test2','money'=12.36,'rebate'=100), array('id'=5,'year'=2014,'month'=
<?php $arrs = array( array('id'=>3,'year'=>2014,'month'=>6,'day'=>2,'name'=>'test1','money'=>10233,'rebate'=>111), array('id'=>7,'year'=>2017,'month'=>6,'day'=>2,'name'=>'test2','money'=>12.36,'rebate'=>100), array('id'=>5,'year'=>2014,'month'=>6,'day'=>2,'name'=>'test1','money'=>10233,'rebate'=>111), array('id'=>11,'year'=>2017,'month'=>6,'day'=>2,'name'=>'test2','money'=>12.36,'rebate'=>100), ); /*group by 后面的字段 可任意增加或减少*/ $groupBy= array('year','month','day'); /*order by 后面的字段,可任意增加或减少*/ $orderBy = array('money'=>'asc','id'=>'desc'); /*操作 格式: mysql内置函数=>字段名|结果别名 */ $option = array('sum'=>'money|sum_money','average'=>'money|average_money,rebate','count'=>'id|total','group_concat'=>'distinct:name|concat_name,rebate'); //Func::p(Func::handdleData($arrs, $groupBy, $orderBy, $option)); Func::p(Func::resultOrderBy($arrs,$orderBy)); class Func{ static function p($data){ echo '<pre />'; print_r($data); } static function handdleData($arrs, $groupBy, $orderBy, $option){ $data = array(); foreach($arrs as $index=>$arr){ $groupKey = ''; foreach($groupBy as $v){ $groupKey .= $arr[$v].'-'; } $groupKey = trim($groupKey,'-'); if(isset($data[$groupKey])) array_push($data[$groupKey],$index); else $data[$groupKey][]=$index; } $data = Func::resultGroupBy($arrs,$data,$groupBy,$option); $data = Func::resultOrderBy($data,$orderBy); return $data; } static function resultGroupBy($arrs,$temp,$groupBy,$option){ $result = array(); foreach($temp as $key=>$value){ foreach($option as $k=>$f){ $parts = explode(',',$f); $distinct = array(); foreach($parts as $part){ $exarr = explode('|',$part); $filed = $exarr[0]; $aliasKey = isset($exarr[1]) ? $exarr[1] : ''; $aliasKey = !empty($aliasKey)?$aliasKey:$k.'_'.$filed; if($k=='sum'){ $aliasValue = 0; foreach($value as $v){ $aliasValue += $arrs[$v][$filed]; } }elseif($k=='average'){ $aliasValue = 0; foreach($value as $v){ $aliasValue += $arrs[$v][$filed]; } $aliasValue = (float)$aliasValue/count($temp[$key]); }elseif($k=='count'){ $aliasValue = count($value); }elseif($k=='group_concat'){ if(strpos($filed,':')){ $distinct = explode(':', $filed); $filed = $distinct[1]; } $aliasValue = array(); foreach($value as $v){ $aliasValue[] = $arrs[$v][$filed]; } $aliasValue = !empty($distinct) ? implode(',',array_unique($aliasValue)) : implode(',',$aliasValue); } $result[$key][$aliasKey] = $aliasValue; } } } foreach ($result as $key => &$value) { $key = explode('-', $key); for ($i = 0; $i < count($groupBy); $i++) { $value[$groupBy[$i]] = $key[$i]; } } return array_values($result); } static function resultOrderBy($arrs,$orderBy){ $orderArr = array(); $orderType = array(); $sortRule = ''; foreach ($orderBy as $key => $value) { $temp = array(); for($i = 0; $i < count($arrs); $i++){ $temp[] = $arrs[$i][$key]; } $orderArr[] = $temp; $orderType[] = $value == 'asc' ? SORT_ASC : SORT_DESC; } for($i=0; $i<count($orderBy); $i++) { $sortRule .= '$orderArr['.$i.'],' . $orderType[$i].',' ; } //echo 'array_multisort('.$sortRule.'$arrs);'; eval('array_multisort('.$sortRule.'$arrs);'); return $arrs; } }

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.
