一、从mysql中选取某个字段不重复的所有值
select *, count(distinct name) from table group by name
二、删除指定的字段重复值,key1是第一个字段,key2是第二个(先加标识符,然后删除-)
//去除指定的字段的重复值 private function deleteRepeat($arr,$key1,$key2){ $length=count($arr); for ($i = 0; $i < $length; $i++) { $cat_fid=$arr[$i][$key1]; $cat_id=$arr[$i][$key2]; for($j=$i+1;$j<count($arr);$j++){ //if ($j != $i) { if ($cat_fid == $arr[$j][$key1]) { if ($cat_id == $arr[$j][$key2]) { $arr[$j]['flag']=1; } }else{ continue; } //} } } foreach($arr as $key=>$val){ if(isset($val['flag'])){ $arr[$key]=""; } } $newarr=array_filter($arr); return $newarr; }
三、保持尺寸不变,改变图片质量来改变大小的方法:
/**
* desription 压缩图片
* @param sting $imgsrc 图片路径
* @param string $imgdst 压缩后保存路径
*/
//压缩图片
private static function image_size_compress($imgsrc,$imgdst,$percent){
list($width,$height,$type)=getimagesize($imgsrc);
$new_width = $width;
$new_height =$height;
switch($type){
case 1:
$giftype=Image::check_gifcartoon($imgsrc);
if($giftype){
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromgif($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
imagedestroy($image_wp);
}
break;
case 2:
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
print_r($imgdst."</br>");
print_r($percent);
imagedestroy($image_wp);
break;
case 3:
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefrompng($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
imagedestroy($image_wp);
break;
default:
break;
}
}
/**
* desription 判断是否gif动画
* @param sting $image_file图片路径
* @return boolean t 是 f 否
*/
private static function check_gifcartoon($image_file){
$fp = fopen($image_file,'rb');
$image_head = fread($fp,1024);
fclose($fp);
return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;
}
//递归改变图片品质,将大小控制在500kb以下
private static function changeSize($old,$new,$percent,$step){
Image::image_size_compress($old, $new, $percent);
$size = filesize($new);
if($size>500000){
unlink($new);
$percent-=$step;
Image::changeSize($old,$new,$percent,$step);
}else{
return;
}
}
//判断修改画质的初始百分比以及单步变化大小
public static function changeImage($old,$new)
{
$size = filesize($old);
//判断缩放初始比例
if ($size > 500000) {
$position = floor($size / 500000);
switch ($position) {
case 10:
$percent = 25;
$step = 3;
break;
case 9:
$percent = 30;
$step = 3;
break;
case 8:
$percent = 35;
$step = 3;
break;
case 7:
$percent = 40;
$step = 4;
break;
case 6:
$percent = 45;
$step = 5;
break;
case 5:
$percent = 50;
$step = 4;
break;
case 4:
$percent = 60;
$step = 4;
break;
case 3:
$percent = 70;
$step = 3;
break;
case 2:
$percent = 80;
$step = 2;
break;
case 1:
$percent = 90;
$step = 1;
break;
default:
$percent = 95;
$step = 1;
break;
}
//每次都先删除中转文件
if(is_file($new)){
unlink($new);
}
Image::changeSize($old, $new, $percent, $step);
}
}
四、PHP7编译的配置
./configure --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --with-mysqli --with-mysql-sock --enable-pdo --with-pdo-mysql --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline --without-sqlite3 --without-pdo-sqlite --with-pear --with-libdir=/lib/x86_64-linux-gnu --with-freetype-dir=/usr/local/include/freetype2/freetype/ --with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --enable-xml
五、拆分字符串为了显示正常(一行汉字显示9个而一行字母显示18个这种问题)
function clipString($str){ $strarr=getStrArr($str); $preg= '/[\x{4e00}-\x{9fa5}]+/u'; $len=0; //截取字符串的位置记录,如果最后还是为0则证明没有这么长,就是不存在就不用来截取了 $pos1=0; $pos2=0; foreach($strarr as $k=>$val){ if(preg_match($preg,$val)){ $len+=2; }else{ $len+=1; } if($len==18||$len==19){ if($len==18){ if($pos1!=0){ $pos2=$k+1; }else { $pos1=$k+1; } $len=0; }else{ if($pos1!=0){ $pos2=$k; }else { $pos1=$k; } $len=2; } } } if($pos1==0){ //说明长度不到一行,不用截取 return false; } if(($pos1!=0)&&($pos2==0)){ //说明可以截取两段 $words1=mb_substr($str,0,$pos1,'utf-8'); $words2=mb_substr($str,$pos1,null,'utf-8'); return array( "words1"=>$words1, "words2"=>$words2 ); } if(($pos1!=0)&&($pos2!=0)){ //说明可以截取两段 $words1=mb_substr($str,0,$pos1,'utf-8'); $words2=mb_substr($str,$pos1,$pos2-$pos1,'utf-8'); $words3=mb_substr($str,$pos2,null,'utf-8'); return array( "words1"=>$words1, "words2"=>$words2, "words3"=>$words3 ); } } //将字符串分割成数组 function getStrArr($str){ $len=mb_strlen($str,"utf-8"); $strarr=array(); for($i=0;$i<$len;$i++){ $strarr[]=mb_substr($str,$i,1,"utf-8"); } return $strarr; } $str="aaa哈哈哈哈啊哈aaa哈哈aaaa哈哈哈aaa哈哈啊哈哈"; $result=clipString($str); print_r($result);