php笔记

现在想想 感觉已经快把php抛弃了~太久不敲代码,手是真的生了,以前虽然学了不少,但是基本上已经还给老师了,正好为渗透巩固下基础,再来学一遍!
挑选自己不会的记录下来~

php内置常量
<?php
    echo(__FILE__); //文件的路径以及路径名字
    echo"</br>";
    echo(__FUNCTION__);//返回函数定义时候的名字
    echo"</br>";
    echo(__DIR__);
    echo"</br>";
    echo(PHP_OS);//操作系统类型
    echo"</br>";
    echo(PHP_VERSION);//php的版本

?>
php全局变量
<?php
$room=20;
function getRoom(){
    echo $room."这是函数内部";
}
echo $room."这是代码间访问";
?>

28bb062b36c03af8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

如果想要在函数体内部输出
第一种方法:

<?php
$room = 20;
function getRoom(){
    global $room;
    echo $room ."这是函数内部";
}
getRoom();
echo "</br>";
echo $room."这是代码间访问";
?>

第二种方法:

<?php
$room = 20;
function getRoom(){
    $room = $GLOBALS['room'];

    echo $room ."这是函数内部";
}
getRoom();
echo "</br>";
echo $room."这是代码间访问";
?>
image.png
变量的销毁
如果是全局变量则不会被销毁,如果是局部变量则会被销毁。


<?php

function getRoom(){
    global $a;   //全局变量
    unset($a);
}
$a = 20;  
getRoom();
echo "</br>";
echo $a;
?>
image.png
//局部变量
<?php

function getRoom(){
    $a = 20;    //局部变量
    unset($a);
    echo  $a;
}
getRoom();
echo "</br>";
echo $a;
?>

image.png
单引号 与双引号的区别
<?php
$a = 20;
echo '$a';
echo "</br>";
echo "$a";
?>
image.png
计算字符串的长度
<?php
$people = "123456789  qwe";
echo strlen($people);
?>
image.png
统计字符串中单词的个数
<?php
$people = "123456789  this is a people.";
echo str_word_count($people);
?>
image.png
清理字符串中的空格
<?php
$people = " 123456789  this is a people. ";
echo ltrim($people)."end";//清理左侧空格
echo "</br>";
echo rtrim($people)."end";//清理右侧空格
echo "</br>";
echo trim($people)."end";//清理两侧的空格
?>
image.png
字符串的切分与组合
<?php
$a = "1 2 3 4 5 6";
$b = "1-2-3-4-5-6";
$c = explode(' ',$a);
$d = explode('-',$b);

echo implode('*',$c);
echo implode('@',$d);
?>
image.png
字符串转换大小写
<?php
$a = "hello i miss you";

echo strtolower($a)."</br>";//转换为小写
echo strtoupper($a)."</br>";//转换为大写
echo ucfirst($a)."</br>";//整个字符串首字母大写
echo ucwords($a)."</br>";//整个字符穿中 带空格为分隔符的首字母大写
?>
image.png
数组遍历
<?php
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
foreach ($prices_per_day as $price){
    echo $price."<br />";
}
foreach ($prices_per_day as $key => $value){
    echo $key.":".$value." 每天。<br />";
}
reset($prices_per_day);
while ($element = each($prices_per_day)){
    echo $element['key']."\t";
    echo $element['value'];
    echo "<br />";
}
reset($prices_per_day);
while (list($type, $price) = each($prices_per_day)){
    echo "$type - $price<br />";
}
?>
image.png
遍历多维数组
<?php
  $roomtypes = array( array( 'type'=>'单床房',
                             '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 '<br />';
  }
?>
image.png
字符串与数组的转换
<?php
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
echo implode('元每天/ ',$prices_per_day).'<br />';

$roomtypes ='单床房,标准间,三床房,VIP套房';
print_r(explode(',',$roomtypes));
?>
image.png
数组 添加删除元素
<?php
   $clients = array('李丽丽','赵大勇','方芳芳');
   array_unshift($clients, '王小明','刘小帅');  //头部添加
   print_r($clients);

?>
image.png

<?php
   $clients = array('李丽丽','赵大勇','方芳芳'); //尾部添加
   array_push($clients, '王小明','刘小帅');
   print_r($clients);
?>
<?php
   $serivces = array('洗衣','订餐','导游','翻译');
   $deletedserivces = array_shift($serivces);  //删除第一个元素
   echo $deletedserivces."<br />";
   print_r($serivces);
?>
<?php
   $serivces = array('s1'=>'洗衣','s2'=>'订餐','s3'=>'导游','s4'=>'翻译');
   $deletedserivces = array_pop($serivces); //删除最后一个元素
   echo $deletedserivces."<br />";
   print_r($serivces);
?>
查询数组中的指定元素
<?php
  $roomtypes = array( '单床房','标准间','三床房','VIP套房');
  $prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);

if(in_array( '单床房',$roomtypes)){echo '单床房元素在数组$roomtypes中。<br />';}
if(array_key_exists( '单床房',$prices_per_day)){echo '键名为单床房的元素在数组$prices_per_day中。<br />';}
if(array_search( 268,$prices_per_day)){echo '值为268的元素在数组$prices_per_day中。<br />';}  

    $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
删除数组中的重复元素
<?php
  $prices_per_day = array('单床房'=> 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
数组的序列化与反序列化
<?php
$arr = array('王小明','李丽丽','方芳芳','刘小帅','张大勇','张明明');
$str = serialize($arr);
echo $str."<br /><br />";
$new_arr = unserialize($str);
print_r($new_arr); 
?>
image.png

php操作文件读取


<?php
//php的文件操作
//1.定位文件的路径(完全路径)
$file_full_path = 'f:/1.txt';

//2.判断文件是否存在
if (file_exists($file_full_path)){
    
    //3.打开文件
    //fopen是打开文件的函数,获取到文件的指针资源
    $fp = fopen($file_full_path, 'r');
    echo "<pre>";
    //var_dump($fp);
    //4.获取文件的大小
    $fileinfo_arr = fstat($fp);
    
    //var_dump($fileinfo_arr);
    //输出文件的信息
    date_default_timezone_set('PRC'); //设置时区
    echo '<br> 文件大小是:' . $fileinfo_arr['size'];
    echo '<br> 文件的创建时间:' . date('Y-m-d H:i:s',$fileinfo_arr['ctime']);
    echo '<br> 文件的修改时间:' . date('Y-m-d H:i:s',$fileinfo_arr['mtime']);
    echo '<br> 文件的访问时间:' . date('Y-m-d H:i:s',$fileinfo_arr['atime']);
    
}else {
    echo "不存在,请检查路径";
}
//大文件适合用这种
<?php
$file_path = 'f:/1.txt';
if (file_exists($file_path)){
    $fp = fopen($file_path, 'r');
    //设置缓冲
    $buffer='';
    $buffer_size = 1024;
    $con_str = '';
    
    //开始一次读取 buffer_size 循环读取
    //!feof($fp)如果没有到结束 就继续读取!
    while (!feof($fp)){
        $buffer = fread($fp, $buffer_size);
        $con_str .=$buffer;
    }
    //关闭文件
    fclose($fp);
    //替换换行
    $con_str = str_replace("\r\n",'<br>', $con_str);
    
    $con_str = str_replace("\n",'<br>', $con_str);
    
    echo $con_str;
    
}else {
    echo '<br>. 该文件不存在!';
}
file_get_contents()
//适合使用小文件的  10M 大小之内!

<?php
//使用最多的第三种方式
//简洁方式
$file_path = 'f:/1.txt';
if (file_exists($file_path)){

    $con_str = file_get_contents($file_path);
    
    $con_str = str_replace("\n\r", '<br>', $con_str);
    
    $con_str = str_replace("\n", '<br>', $con_str);
    
    echo $con_str;
    
    
}else {
    echo "文件不存在";
}
<?php 

// 定义配置文件 读取文件
//路径
$file_path = 'config.ini';
$arr_ini = parse_ini_file($file_path);

echo "<pre>";
var_dump($arr_ini);


echo '<br> user = ' . $arr_ini['user'];

echo '<br> pwd = ' . $arr_ini['pwd'];

php操作文件写入

<?php

$file_path =  'f:/hello word.txt';
if (!file_exists($file_path)){
    
    //创建并写入
    $fp = fopen($file_path, 'w');
    
    
    $con = '';
    for ($i=0;$i<10;$i++){
        $con .= "hello world \r\n";
    }
    
    fwrite($fp, $con);
    fclose($fp);
}else {
    echo "<br>"."文件已经存在,失败";
}
<?php
//如果文件不存在,创建一个新文件,写入10句话   123  如果已经存在则写入 10句话 456!


$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
    
    $con = '';
    for ($i = 0;$i<10;$i++){
        $con .= "123 \r\n";
    }
    
    // file_put_contents 
    //如果文件不存在 先创建 再添加
    //如果文件存在  会覆盖
    file_put_contents($file_path, $con);
    

    
    
}else {
    $con = '';
    for ($i = 0;$i<10;$i++){
        $con .= "456 \r\n";
    }
    
    file_put_contents($file_path, $con);
}

<?php
//如果文件不存在,创建一个新文件,写入10句话   123  如果已经存在则写入 10句话 456!


$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
    
    $con = '';
    for ($i = 0;$i<10;$i++){
        $con .= "123 \r\n";
    }
    
    // file_put_contents 
    //如果文件不存在 先创建 再添加
    //如果文件存在  会覆盖
    file_put_contents($file_path, $con);
    

    // file_put_contents
    
    //如果文件存在  会覆盖 file_put_contents($file_path, $con);
    //如果文件存在,希望追加写 需要这样:file_put_contents($file_path, $con, FILE_APPEND);
    
}else {
    $con = '';
    for ($i = 0;$i<10;$i++){
        $con .= "456 \r\n";
    }
    
    file_put_contents($file_path, $con, FILE_APPEND);
}

php操作文件 删除文件


<?php 
//删除文件

$file_path = 'f:/hello word.txt';
if(file_exists($file_path)){
    //如果存在则删除
    if (unlink($file_path)){
        echo '<br> 删除陈工';
        
    }
        else {
            echo '<br> 删除失败';
        }
    
}else {
    //如果不存在,则不做操作
    
   echo '<br> 该文件已经删除';
}


php操作文件 修改文件名字

<?php

//修改文件

$file_path = 'f:/hello word.txt';
$file_new_path = 'f:/123.txt';
//$file_new_path = 'f:/一二三.txt';
//如果是中文,用iconv进行编码
//iconv('utf-8', 'gbk', $file_new_path);

if(file_exists($file_path)){
    //如果存在则删除
    if (rename($file_path, $file_new_path)){
        echo '<br>修改成功';
    }else {
        echo '<br>修改失败.';
    }

    
}else {
    //如果不存在,则不做操作
    
    echo '<br> 该文件不存在';
}



php操作文件目录

//创建文件目录
<?php

$file_path = 'f:/123';
if (!is_dir($file_path)){
    
    if (mkdir($file_path)){
        echo '<br> 成功';
        
    }
    else {
        echo '<br> 失败';
   }
}

创建多级目录

<?php

$file_path = 'f:/123/aaa/bbb';
if (!is_dir($file_path)){
    
    //创建多级目录
    //0777 在  windows下被忽略  true 代表可以船舰多级目录
    if (mkdir($file_path,0777,true)){
        echo '<br> 成功';
        
    }
    else {
        echo '<br> 失败';
   }
}

删除单级目录

<?php

$file_path = 'f:/123';
if (is_dir($file_path)){
    
    //删除单级目录
    if (rmdir($file_path)){
        echo '<br> 成功';
        
    }
    else {
        echo '<br> 失败';
   }
}

封装文件上传类

<?php
class Upload
{
    //定义成员属性
    private $upload_path = 'upload/';  //上传文件保存的路径
    
    private $maxsize = 1024000;  
    
    //允许上传的文件的最大限制
    private $prefix = 'tn_';            //文件名的前缀
    //允许上传的文件类型
    private $allow_type = array('image/jpeg','image/jpg','image/png','image/gif');
    
    //提供修改、读取的方法:set  get
    public function __set($p,$v)
    {
        if(property_exists($this, $p)){
            $this->$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

<?php

$_file = $_GET['file'];
if($_file == ''){
    echo '<br> 找不到';
    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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 一、Apache、PHP、MySQL安装 1、Apache的安装 1.1 安装: 在dos界面进入安装包的bin目...
    wscfan阅读 1,224评论 3 4
  • PHP 学习目录 ├─PHP视频教程 1 LAMP网站构建 │ ├─PHP教程 1.1.1 新版视频形式介绍│ ...
    曹渊说创业阅读 16,151评论 29 417
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,128评论 0 3
  • 余大头,原名余丰,字中华。 本来他的头不大的,因为秃顶了,就显得头大了。 一是因为他的老爹希望从他出生以后家里的日...
    593a7fd6bcbd阅读 1,322评论 2 5
  • 苏格拉底说:没有反思的人生不值得过 一、健康:早睡早起、跑步,按时吃饭,饮食结构荤素搭配,考虑营养配餐。 二、家庭...
    李若菲_590d阅读 192评论 0 0