代码如下:
<?php /** * 判断上传文件大小 * edit www. */ function imageUpload() { if (is_uploaded_file($_FILES['logo']['tmp_name'])) { //$_FILES是一个关于图片信息的数组 $upfile = ($_FILES["logo"]); //赋值 $suffix=substr($upfile["name"],strrpos($upfile["name"],".")); $name = mktime() .rand().$suffix; //原文件名 $type = $upfile["type"]; //文件类型 $size = $upfile["size"]; //文件大小 $tmp_name = $upfile["tmp_name"]; //临时文件名 $error = $upfile["error"]; //上传相关错误代码 $str=getimagesize($tmp_name); $mode="/width=\"(.*)\" height=\"(.*)\"/"; preg_match($mode,$str[3],$arr); if($arr[1]>120 || $arr[2]>60){ echo "<script>alert('图片过大');</script>"; exit(); } switch ($type) { case 'image/pjpeg' : $ok = 1; break; case 'image/jpeg' : $ok = 1; break; case 'image/gif' : $ok = 1; break; //case 'image/x-png' : // $ok = 1; //IE为x-png;FOX为png // break; } if ($ok && $error == '0') { move_uploaded_file($tmp_name, "c:/" . $name); return $name; } } else { return null; } } ?>
php进制转换,十六进制转为二进制,代码:
<?php /** * 十六进制转为二进制 * edit by www. */ function hex2bin($h) { if (!is_string($h)) return null; $r=''; for ($a=0; $a<strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)})); } return $r; } ?>
下面介绍下,php 实现进制转换(二进制、八进制、十六进制)互相转换的方法。
1,从十进制向其它进制转换,判断该数字不断除以要转换的进制数,读取余数,连接一起即可。
代码:
<?php /** *十进制转二进制、八进制、十六进制 不足位数前面补零* * * @param array $datalist 传入数据array(100,123,130) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有数据转换的格式 * edit by www. */ function decto_bin($datalist,$bin) { static $arr=array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'); if(!is_array($datalist)) $datalist=array($datalist); if($bin==10)return $datalist; //相同进制忽略 $bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度 $aOutChar=array(); foreach ($datalist as $num) { $t=""; $num=intval($num); if($num===0)continue; while($num>0) { $t=$arr[$num%$bin].$t; $num=floor($num/$bin); } $tlen=strlen($t); if($tlen%$bytelen!=0) { $pad_len=$bytelen-$tlen%$bytelen; $t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0 } $aOutChar[]=$t; } return $aOutChar; } ?>
测试:
var_dump(decto_bin(array(128,253),2));
var_dump(decto_bin(array(128,253),8));
var_dump(decto_bin(array(128,253),16));
X-Powered-By: PHP/5.2.0
Content-type: text/html
array(2) {
[0]=>
string(8) "10000000"
[1]=>
string(8) "11111101"
}
array(2) {
[0]=>
string(4) "0200"
[1]=>
string(4) "0375"
}
array(2) {
[0]=>
string(2) "80"
[1]=>
string(2) "FD"
}
2,二进制、八进制、十六进制转十进制
此转换用乘法,如:1101 转十进制:1*2^3+1*2^2+0*2^1+1*2^0
代码:
<?php /** *二进制、八进制、十六进制 转十进制 * edit by www. * * @param array $datalist 传入数据array(df,ef) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有数据转换的格式 */ function bin_todec($datalist,$bin) { static $arr=array('0'=>0,'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6, '7'=>7,'8'=>8,'9'=>9,'A'=>10,'B'=>11,'C'=>12,'D'=>13,'E'=>14,'F'=>15); if(!is_array($datalist))$datalist=array($datalist); if($bin==10)return $datalist; //为10进制不转换 $aOutData=array(); //定义输出保存数组 foreach ($datalist as $num) { $atnum=str_split($num); //将字符串分割为单个字符数组 $atlen=count($atnum); $total=0; $i=1; foreach ($atnum as $tv) { $tv=strtoupper($tv); if(array_key_exists($tv,$arr)) { if($arr[$tv]==0)continue; $total=$total+$arr[$tv]*pow($bin,$atlen-$i); } $i++; } $aOutData[]=$total; } return $aOutData; } ?>
测试:
var_dump(bin_todec(array('ff','ff33','cc33'),16));
var_dump(bin_todec(array('1101101','111101101'),2));
var_dump(bin_todec(array('1234123','12341'),8));
X-Powered-By: PHP/5.2.0
Content-type: text/html
array(3) {
[0]=>
int(255)
[1]=>
int(65331)
[2]=>
int(52275)
}
array(2) {
[0]=>
int(124)
[1]=>
int(508)
}
array(2) {
[0]=>
int(342099)
[1]=>
int(5345)
}
总结:
在php中内置不少函数可以完成以上的进制转换,比如bindec(),decoct(),dechex() base_convert() decbin()等。
通过本文,带给大家一个实现php中进制转换的思路,希望对大家有所帮助。
一,php数组的定义
php数组表示一组相关联的数据。
在 PHP 中,用 array() 定义一个数组。
例子:
<html> <body> <?php $a = array("orange", "apple","peach"); echo $a[0]; ?> </body> </html>
其中,$a = array("orange", "apple","peach"); 定义了一个数组变量,该数组有三个数据。
数组的每个值之间用逗号分隔。
下面的语句echo $a[0] 表示输出数组的第一个值,即"orange"。
注意,数组是以0为基数,而不是1。数组变量方括号 [] 里的值,我们称为数组的索引 key。
数组是 key-value 一一对应的组合
数组的基本单位是元素 (elements)。每个元素由一对索引(key,也称为“键”) 和值(value) 组成。
每个值,都有一个相对应的索引 (key)。通过指明数组的 key,我们获取相对应的值,比如 $a[0]。
前面示例的数组定义方法,是数组定义的一种简写方式,没有定义数组每个值的 key。
在缺省情况下,如果不定义数组每个值的 key,key 就从 0 开始每次自动加 1。
$a = array("orange", "apple","peach"); $a = array(0=>"orange", 1=>"apple",2=>"peach");
上面两句代码效果是一样的,第一句没有指定数组的 key,系统就自动给数组的每个值加 key,key 的值从0开始每次加1。第二句代码,是在定义数组的时候,给数组的每个
值加赋予对应的key。
定义数组中一对 key-value 的写法是:key=>value,比如 0=>"orange"表示 key 为 0,对应的值为 "orange"。
指定 key 比不指定 key 的写法虽然复杂,但是也给予你设定 key 的自由度,你可以随意设定数组每个值的key。
比如:
<html> <body> <?php $a = array(1=>"orange", 3=>"apple",5=>"peach"); echo $a[1]; ?> </body> </html>
另外,数组的 key 还可以用字符串表示。注意:用字符串作 key,在指明 key 的时候,要加引号。
比如:
<html> <body> <?php $a = array("os"=>"Windows XP", "lang"=>"Chinese","sp"=>"Service Pack 3"); echo $a["os"],"<br />"; echo $a["lang"],"<br />"; echo $a["sp"]; ?> </body> </html>
注:key 只能是整数和字符串。
定义数组还可以有另外一种方法,如下例:
$a["os"] ="Windows XP"; $a["lang"] ="Chinese"; $a["sp"]="Service Pack 3";
效果和$a = array("os"=>"Windows XP", "lang"=>"Chinese","sp"=>"Service Pack 3");一样。
二,修改数组
1,增加一个数组元素的语法:
$array_name[key] = value
2,删除一个数组元素,使用 unset 函数,语法如下:
unset($array_name[key])
增加和删除一个数组元素的示例如下,其中$a["c"] = 300;
表示增加一个 key 为 "c" ,值为300 的数组元素;unset($a["b"]);
表示删除一个 key 为 "b"的数组元素:
<html> <body> <?php $a = array(a=>100, b=>200,d=>500); $a["c"] = 300; unset($a["b"]); foreach ($a as $key=> $value) { echo $key.": ".$value."<br />"; } ?> </body> </html>
输出:
a: 100
d: 500
c: 300