现在想想 感觉已经快把php抛弃了~太久不敲代码,手是真的生了,以前虽然学了不少,但是基本上已经还给老师了,正好为渗透巩固下基础,再来学一遍!
挑选自己不会的记录下来~
php内置常量
";
echo(__FUNCTION__);//返回函数定义时候的名字
echo"";
echo(__DIR__);
echo"";
echo(PHP_OS);//操作系统类型
echo"";
echo(PHP_VERSION);//php的版本
?>
php全局变量
28bb062b36c03af8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如果想要在函数体内部输出
第一种方法:
";
echo $room."这是代码间访问";
?>
第二种方法:
";
echo $room."这是代码间访问";
?>
image.png
变量的销毁
如果是全局变量则不会被销毁,如果是局部变量则会被销毁。
";
echo $a;
?>
image.png
//局部变量
";
echo $a;
?>
image.png
单引号 与双引号的区别
";
echo "$a";
?>
image.png
计算字符串的长度
image.png
统计字符串中单词的个数
image.png
清理字符串中的空格
";
echo rtrim($people)."end";//清理右侧空格
echo "";
echo trim($people)."end";//清理两侧的空格
?>
image.png
字符串的切分与组合
image.png
字符串转换大小写
";//转换为小写
echo strtoupper($a)."";//转换为大写
echo ucfirst($a)."";//整个字符串首字母大写
echo ucwords($a)."";//整个字符穿中 带空格为分隔符的首字母大写
?>
image.png
数组遍历
298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
foreach ($prices_per_day as $price){
echo $price."
";
}
foreach ($prices_per_day as $key => $value){
echo $key.":".$value." 每天。
";
}
reset($prices_per_day);
while ($element = each($prices_per_day)){
echo $element['key']."\t";
echo $element['value'];
echo "
";
}
reset($prices_per_day);
while (list($type, $price) = each($prices_per_day)){
echo "$type - $price
";
}
?>
image.png
遍历多维数组
'单床房',
'info'=>'此房间为单人单间。',
'price_per_day'=>298
),
array( 'type'=>'标准间',
'info'=>'此房间为两床标准配置。',
'price_per_day'=>268
),
array( 'type'=>'三床房',
'info'=>'此房间备有三张床',
'price_per_day'=>198
),
array( 'type'=>'VIP套房',
'info'=>'此房间为VIP两间内外套房',
'price_per_day'=>368
)
);
for ($row = 0; $row < 4; $row++){
while (list($key, $value ) = each( $roomtypes[$row])){
echo "$key:$value"."\t |";
}
echo '
';
}
?>
image.png
字符串与数组的转换
298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
echo implode('元每天/ ',$prices_per_day).'
';
$roomtypes ='单床房,标准间,三床房,VIP套房';
print_r(explode(',',$roomtypes));
?>
image.png
数组 添加删除元素
image.png
";
print_r($serivces);
?>
'洗衣','s2'=>'订餐','s3'=>'导游','s4'=>'翻译');
$deletedserivces = array_pop($serivces); //删除最后一个元素
echo $deletedserivces."
";
print_r($serivces);
?>
查询数组中的指定元素
298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
if(in_array( '单床房',$roomtypes)){echo '单床房元素在数组$roomtypes中。
';}
if(array_key_exists( '单床房',$prices_per_day)){echo '键名为单床房的元素在数组$prices_per_day中。
';}
if(array_search( 268,$prices_per_day)){echo '值为268的元素在数组$prices_per_day中。
';}
$prices_per_day_keys = array_keys($prices_per_day);
print_r($prices_per_day_keys);
$prices_per_day_values = array_values($prices_per_day);
print_r($prices_per_day_values);
?>
image.png
删除数组中的重复元素
298,'标准间'=> 268,'三床房'=> 198,'四床房'=> 198,'VIP套房'=> 368);
$prices_per_day2 = array('单床房'=> 298,'标准间'=> 268,'四床房'=> 198,'三床房'=> 198,'VIP套房'=> 368);
print_r(array_unique($prices_per_day));
print_r(array_unique($prices_per_day2));
?>
image.png
数组的序列化与反序列化
";
$new_arr = unserialize($str);
print_r($new_arr);
?>
image.png
php操作文件读取
";
//var_dump($fp);
//4.获取文件的大小
$fileinfo_arr = fstat($fp);
//var_dump($fileinfo_arr);
//输出文件的信息
date_default_timezone_set('PRC'); //设置时区
echo '
文件大小是:' . $fileinfo_arr['size'];
echo '
文件的创建时间:' . date('Y-m-d H:i:s',$fileinfo_arr['ctime']);
echo '
文件的修改时间:' . date('Y-m-d H:i:s',$fileinfo_arr['mtime']);
echo '
文件的访问时间:' . date('Y-m-d H:i:s',$fileinfo_arr['atime']);
}else {
echo "不存在,请检查路径";
}
//大文件适合用这种
', $con_str);
$con_str = str_replace("\n",'
', $con_str);
echo $con_str;
}else {
echo '
. 该文件不存在!';
}
file_get_contents()
//适合使用小文件的 10M 大小之内!
', $con_str);
$con_str = str_replace("\n", '
', $con_str);
echo $con_str;
}else {
echo "文件不存在";
}
";
var_dump($arr_ini);
echo '
user = ' . $arr_ini['user'];
echo '
pwd = ' . $arr_ini['pwd'];
php操作文件写入
"."文件已经存在,失败";
}
php操作文件 删除文件
删除陈工';
}
else {
echo '
删除失败';
}
}else {
//如果不存在,则不做操作
echo '
该文件已经删除';
}
php操作文件 修改文件名字
修改成功';
}else {
echo '
修改失败.';
}
}else {
//如果不存在,则不做操作
echo '
该文件不存在';
}
php操作文件目录
//创建文件目录
成功';
}
else {
echo '
失败';
}
}
创建多级目录
成功';
}
else {
echo '
失败';
}
}
删除单级目录
成功';
}
else {
echo '
失败';
}
}
封装文件上传类
$p = $v;
}
}
public function __get($p)
{
return $this->$p;
}
//功能,方法,具体实现文件上传的方法
public function doUpload($file)
{
// sleep(5);
//将临时文件移动到服务器的目录中
//参数1:临时的文件名
//参数2:目的地文件名
//上传成功返回true,失败返回false
$destination = $this->upload_path;
//1. 限制上传文件的大小
$maxsize = $this->maxsize; //200KB
if($file['size'] > $maxsize){
echo '图片太大了,服务器撑不下';
exit;
}
//2. 防止文件重复
//首先生成一个唯一的随机数作为文件的名字
//参数1:前缀
//参数2:布尔值,如果true化,更具有唯一性
$filename = uniqid($this->prefix,true);
//确定文件的后缀
//strrchr()用来获得一个字符串中最后一次出现的字符,返回从该字符之后的部分
//参数1:look needle from haystack,大海捞针
$ext = strrchr($file['name'], '.');
$new_filename = $filename.$ext;
//3. 分目录存储上传的文件
//按照日期创建子目录
date_default_timezone_set('PRC');
$sub_path = date('Ymd').'/';
//创建目录,先判断下 uploads/20170330是否存在,如果不存在则创建该目录
if(!is_dir($destination.$sub_path)){
mkdir($destination.$sub_path,0777,true);
}
$destination .= $sub_path.$new_filename;
//4. 上传的文件类型是否支持
$allow_type = $this->allow_type;
$true_type = $file['type'];
if(!in_array($true_type, $allow_type)){
echo '不支持该类型的文件';
exit;
}
//实例化finfo对象,用来获得一个文件的真实的类型
/*
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = $finfo -> file($file['tmp_name']);
if(!in_array($type, $allow_type)){
echo '不支持该类型的文件';
exit;
}*/
if(move_uploaded_file($file['tmp_name'], $destination)){
//上传成功之后,要把地址返回,而且将来这个地址还要保存到数据库
//通常返回从日期开始的相对的路径,便于将来进行拼接
return $sub_path.$new_filename;
}else{
return false;
}
}
}
cau'o'zuo
找不到';
exit;
}
$full_name = 'img/'.$file;
$file_size = filesize($full_name);
iconv('utf-8', 'gbk', $full_name);
//顺序不能乱
//高速浏览器回应的文件是内容注意保存
header("Content-Type: application/otect-stream");
//按照字节返回
header("Accept-Ranges: bytes");
//显示文件大小
header("Content-length: $file_size");
//弹出对话框 ,对应的文件名!
header("Content-Disposition: attachment; filename=".$_file);
$fp = fopen($full_name, 'r');
while(!feof($fp)){
$data = fread($fp, 1024);
echo $data;
}
fclose($fp);