引用赋值:销毁其中一个,另外一个还保存其值。验证代码:
<?php
$v1="welcome";
$v2=$v1;
$v3=&$v1;
$v3.="php world";
echo "v1: ".$v1."<br>";
echo "v2: ".$v2."<br>";
echo "v3: ".$v3."<br>";
unset($v1);
echo "v1: ".$v1."<br>";
echo "v3: ".$v3."<br>";
?>
字符串自加:
“bizz"++ ----> "bjaa"
26进制的带进位加减法
执行运算符:反引号`,这个符号在Esc下面,1的左边,不要以为是单引号了
break语句(continue同理):break n,可以跳出n层代码块(循环)。 break 等于 break 1。
变量名区分大小写;函数名不区分大小写。
==仅比较值,例如“0”==false为真,===不仅比较值,还比较类型,左例为假。
简单的phash代码:
function phash($pic,$format){
if(!($size=getimagesize($pic))){
return "not a pic";
}
$func="imagecreatefrom".$format;
$im=$func($pic);
if(!imageistruecolor($im)) {
echo "$pic isn't true color<br>";
}
$sum=0;
for($i=0;$i<8;$i++){
for($j=0;$j<8;$j++){
$color_index=imagecolorat($im,$j*$size[0]/8,$i*$size[1]/8);
$rgb=imagecolorsforindex($im,$color_index);
$gray[$i*8+$j] = round(0.229 * $rgb['red'] + 0.587 * $rgb['green'] + 0.114 * $rgb['blue']);
$sum+=$gray[i*8+j];
}
}
$avg=$sum/64;
for($i=0;$i<64;$i++){
if($gray[$i] > $avg){
$result.="1";
}else{
$result.="0";
}
}
echo $result."<br>";
return $result;
}
递归读取文件(深度优先):
$fp = fopen("temp.txt","w");
dodir($dirname,$fp);
fclose($fp);
function dodir($dirname,&$fp){
$dir=opendir($dirname);
while(($filename=readdir($dir))!==false){
if($filename=='.' || $filename=='..'){
continue;
}
if(is_dir($dirname.'/'.$filename)){
dodir($dirname.'/'.$filename,$fp);
}else{
print($dirname.'/'.$filename."<br>");
fwrite($fp,$dirname.'/'.$filename.PHP_EOL);
}
}
}