PHP全栈学习笔记32

作者: 魔王哪吒 | 来源:发表于2019-05-10 23:33 被阅读9次
    <?php
    $i = 0;
    do {
     echo $i;
    } while ($i > 0);
    ?>
    
    for (表达示1; 表达示2; 表达示3){
            需要执行的代码段
    }
    
    <?php
    for ($i = 1; $i <= 10; $i++) {
        if($i == 4){
                break;
        }
        echo '分手后第'.$i.'年,我全都忘了你的样子<br />';
    }
    ?>
    
    <?php
    for($i=0; $i<100; $i++) {
     echo '第'. $i .'11<br />';
     if($i == 17){
     goto end; 
     }
    }
    end:
    echo '22';
    ?>
    
    <?php
    goto wan;
    echo '11';
    
    wan:
    echo '12';
    ?>
    
    <?php
    function test( $arg = 10){
           echo $arg;
    }
    test();
    test(88);
    ?>
    
    <?php
    function test( $a , $b = 20 , $c = 30){
           echo $a + $b + $c;
    }
    test( 1 , 2 , 3 );
    ?>
    
    <?php
    $hello = 10;
    function demo( $hello ){
       $hello = 250;
       echo $hello + $hello;
    }
    demo($hello);
    echo $hello;
    ?>
    
    <?php
    function demo(){
       echo 111;
       return;
       echo 222;
    }
    demo();
    ?>
    
    <?php
    function php_cn(){
       $foo = 5;
       $bar = 6;
       $result =  $foo + $bar;
       return $result;
    }
    $piao = php_cn();
    echo $piao;
    ?>
    
    <?php
    function demo(){
     echo '天王盖地虎';
    }
    function test(){
     echo '小鸡炖蘑菇';
    }
    
    $fu = 'demo';
    $fu();
    ?>
    
    <?php 
    $hello = 'world';
    $world = '你好';
    //输出的结果为:你好
    echo $$hello; 
    ?>
    

    php自定义函数之匿名函数
    所谓匿名,就是没有名字。
    匿名函数,也就是没有函数名的函数。

    变量函数式的匿名函数

    <?php
    $greet = function($name)
    {
     echo $name.',你好';
    };
    $greet('11');
    $greet('22');
    ?>
    

    内部函数,是指在函数内部又声明了一个函数。

    <?php
    function hello(){
     $GLOBALS['que'] = '12';
     echo '3<br />';
    }
    hello();
    echo $que;
    ?>
    
    <?php
    $hello = 10;
    
    echo $GLOBALS['hello'].'<br />';
    
    $GLOBALS['hello'] = '我爱你';
    
    echo $hello;
    
    ?>
    
    <?php
    $one = 10;
    function demo(){
       $two = 100;
       $result = $two + $GLOBALS['one'];
       return $result;
    }
    //你会发现结果变成了110
    echo demo();
    ?>
    
    <?php
    
    function hello(){
       $GLOBALS['que'] = '111';
       echo '你调了一下函数hello<br />';
    }
    hello();
    echo $que;
    
    ?>
    
    <?php
    
    $a = 10;
    
    $b = &$a;
    
    $a = 100;
    
    echo $a.'---------'.$b;
    ?>
    
    <?php
    
    $foo = 100;
    
    //注意:在$n前面加上了&符
    function demo(&$n){
    
           $n = 10;
    
           return $n + $n;
    
    }
    
    echo  demo($foo).'<br />';
    
    //你会发生$foo的值变为了10
    echo $foo;
    
    ?>
    

    php 数学常用函数

    image.png

    获取时期时间信息函数
    1.时区

    2.世界时
    
    3.unix时间戳
    

    设置时区的函数为:
    1).date_default_timezone_get()
    2).date_default_timezone_set()

    <?php
    echo date_default_timezone_get ();
    ?>
    
    <?php
    
    //定义一下时区常量,以后你可以放到配置文件里
    define('TIME_ZONE','Asia/shanghai');
    
    //执行函数
    date_default_timezone_set(TIME_ZONE);
    
    echo date('Y-m-d H:i:s');
    
    ?>
    

    time()获取当前的unix时间戳

    <?php
       $time=time();
       print_r( $time);
    ?>
    
    <?php
    echo date('Y年m月d日');
    ?>
    
    <?php
    echo date('Y-m-d H:i:s');
    ?>
    

    getdate获取当前系统时间

    microtime()这个函数,能够返回当前 Unix 时间戳和微秒数

    PHP常用函数:

    trim() 删除字符串两端的空格或其他预定义字符
    rtrim() 删除字符串右边的空格或其他预定义字符
    ltrim() 删除字符串左边的空格或其他预定义字符
    dirname() 回路径中的目录部分
    str_pad() 把字符串填充为指定的长度
    str_repeat() 重复使用指定字符串
    str_split() 把字符串分割到数组中
    strrev() 反转字符串
    wordwrap() 按照指定长度对字符串进行折行处理

    str_shuffle() 随机地打乱字符串中所有字符
    parse_str() 将字符串解析成变量
    number_format() 通过千位分组来格式化数字
    strtolower() 字符串转为小写
    strtoupper() 字符串转为大写
    ucfirst() 字符串首字母大写
    ucwords() 字符串每个单词首字符转为大写
    str_shuffle() 随机地打乱字符串中所有字符
    parse_str() 将字符串解析成变量

    php日期验证函数

    checkdate可以判断一个输出的日期是否有效。

    函数的语法格式如下:

    bool checkdate ( int $month , int $day , int $year )
    

    获取本地化时间戳函数

    mktime()函数可以对一个日期和时间获得一个本地化时间戳
    
    <?php
    //now为现在的当前时间
    echo strtotime("now")."<br />";
    //2000年9月10日
    echo strtotime("10 September 2000")."<br />";
    //当前时间加一天
    echo strtotime("+1 day")."<br />";
    //当前时间加一周
    echo strtotime("+1 week")."<br />";
    //当前时间加一周2天4小时2秒
    echo strtotime("+1 week 2 days 4 hours 2 seconds")."<br />";
    //下一个星期四
    echo strtotime("next Thursday")."<br />";
    //上一个星期一
    echo strtotime("last Monday")."<br />";
    ?>
    
    <?php
    //开始时间
    $time_start = microtime(true);
    //循环一万次
    for($i = 0 ; $i < 10000 ; $i++){
    
    }
    //结整时间
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    
    echo "这个脚本执行的时间为 $time seconds\n";
    ?>
    

    PHP数组与数据结构

    <?php
    
    $minren = array(
     '杨幂',
     '王珞丹',
     '刘亦菲',
     '黄圣依',
     '范冰冰'
     );
    $minren[5] = '范爷';
    $minren[2] = '亦菲';
    echo '<pre>';
    var_dump($minren);
    echo '</pre>';
    ?>
    
    int count ( mixed $变量)
    
    <?php
    
    list($one , $two , $three) = array('张三' ,'李四' ,'王五');
    
    //再次声明:单引号不结释变量,所以输出的是字符串$one
    echo '$one----'.$one.'<br />';
    echo '$two----'.$two.'<br />';
    echo '$three----'.$three.'<br />';
    
    ?>
    
    array_shift 弹出数组中的第一个元素
    array_unshift   在数组的开始处压入元素
    array_push  向数组的末尾处压入元素
    array_pop   弹出数组末尾的最后一个元素
    current 读出指针当前位置的值
    key 读出指针当前位置的键
    next    指针向下移
    prev    向上移
    reset   指针到开始处
    end 指针到结束处
    
    array_rand()    从数组中随机抽取一个或多个元素,注意是键名   
    array_unique()  删除重复值,返回剩余数组    
    sort()  按升序对给定数组的值排序,不保留键名  
    rsort() 对数组逆向排序,不保留键名   
    asort() 对数组排序,保持索引关系    
    arsort()    对数组逆向排序,保持索引关系  
    ksort() 按键名对数组排序    
    krsort()    将数组按照键逆向排序  
    natsort()   用自然顺序算法对数组中的元素排序    
    natcasesort()   自然排序,不区分大小写 
    array_filter()  去掉数组中的空元素或者预定元素 
    extract 将键变为变量名,将值变为变量值
    
    range() 创建并返回一个包含指定范围的元素的数组。    
    compact()   创建一个由参数所带变量组成的数组    
    array_fill()    用给定的值生成数组   
    array_chunk()   把一个数组分割为新的数组块   
    array_merge()   把两个或多个数组合并为一个数组 
    array_slice()   在数组中根据条件取出一段值,并返回   
    array_diff()    返回两个数组的差集数组 
    array_search()  在数组中搜索给定的值,如果成功则返回相应的键名 
    array_splice()  把数组中的一部分去掉并用其它值取代   
    array_sum() 计算数组中所有值的和  
    in_array()  检查数组中是否存在某个值    
    array_key_exists()  检查给定的键名或索引是否存在于数组中  
    shuffle()   将数组打乱,保留键值  
    count() 计算数组中的单元数目或对象中的属性个数 
    array_flip()    返回一个键值反转后的数组    
    array_keys()    返回数组所有的键,组成一个数组 
    array_values()  返回数组中所有值,组成一个数组 
    array_reverse() 返回一个元素顺序相反的数组
    

    原子是正则表达示里面的最小单位

    \d  匹配一个0-9
    \D  除了0-9以外的所有字符
    \w  a-zA-Z0-9_
    \W  除了0-9A-Za-z_以外的所有字符
    \s  匹配所有空白字符\n \t \r 空格
    \S  匹配所有非空白字符
    [ ] 指定范围的原子
    
    <?php
     //创建了一个临时文件
     $handle = tmpfile();
    
     //向里面写入了数据
     $numbytes = fwrite($handle, '写入临时文件');
    
     //关闭临时文件,文件即被删除
     fclose($handle);
    
     echo '向临时文件中写入了'.$numbytes . '个字节';
    ?>
    
    <?php
     //旧文件名
     $filename = 'copy.txt';
    
     //新文件名
     $filename2 = $filename . '_new';
    
     //修改名字。
     copy($filename, $filename2);
    ?>
    
    <?php
    
    $filename = 'demo.txt';
    
    if (file_exists($filename)) {
     echo '$filename文件的上次访问时间是:' . date("Y-m-d H:i:s", fileatime($filename));
    
     echo '$filename文件的创建时间是: ' . date("Y-m-d H:i:s", filectime($filename));
    
     echo '$filename文件的修改时间是: ' . date("Y-m-d H:i:s", filemtime($filename));
    }
    ?>
    

    文件上传需要注意php.ini文件

    <form action="" enctype="multipart/form-data" method="post" 
    name="uploadfile">上传文件:<input type="file" name="upfile" /><br> 
    <input type="submit" value="上传" /></form> 
    <?php 
    //print_r($_FILES["upfile"]); 
    if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ 
    $upfile=$_FILES["upfile"]; 
    //获取数组里面的值 
    $name=$upfile["name"];//上传文件的文件名 
    $type=$upfile["type"];//上传文件的类型 
    $size=$upfile["size"];//上传文件的大小 
    $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径 
    //判断是否为图片 
    switch ($type){ 
    case 'image/pjpeg':$okType=true; 
    break; 
    case 'image/jpeg':$okType=true; 
    break; 
    case 'image/gif':$okType=true; 
    break; 
    case 'image/png':$okType=true; 
    break; 
    } 
    
    if($okType){ 
    /** 
    * 0:文件上传成功<br/> 
    * 1:超过了文件大小,在php.ini文件中设置<br/> 
    * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/> 
    * 3:文件只有部分被上传<br/> 
    * 4:没有文件被上传<br/> 
    * 5:上传文件大小为0 
    */ 
    $error=$upfile["error"];//上传后系统返回的值 
    echo "================<br/>"; 
    echo "上传文件名称是:".$name."<br/>"; 
    echo "上传文件类型是:".$type."<br/>"; 
    echo "上传文件大小是:".$size."<br/>"; 
    echo "上传后系统返回的值是:".$error."<br/>"; 
    echo "上传文件的临时存放路径是:".$tmp_name."<br/>"; 
    
    echo "开始移动上传文件<br/>"; 
    //把上传的临时文件移动到up目录下面 
    move_uploaded_file($tmp_name,'up/'.$name); 
    $destination="up/".$name; 
    echo "================<br/>"; 
    echo "上传信息:<br/>"; 
    if($error==0){ 
    echo "文件上传成功啦!"; 
    echo "<br>图片预览:<br>"; 
    echo "<img src=".$destination.">"; 
    //echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; 
    }elseif ($error==1){ 
    echo "超过了文件大小,在php.ini文件中设置"; 
    }elseif ($error==2){ 
    echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; 
    }elseif ($error==3){ 
    echo "文件只有部分被上传"; 
    }elseif ($error==4){ 
    echo "没有文件被上传"; 
    }else{ 
    echo "上传文件大小为0"; 
    } 
    }else{ 
    echo "请上传jpg,gif,png等格式的图片!"; 
    } 
    } 
    ?> 
    

    php文件上传的步骤

    <form action="" enctype="multipart/form-data" method="post" 
    name="uploadfile">上传文件:<input type="file" name="upfile" /><br> 
    <input type="submit" value="上传" /></form> 
    <?php 
    //print_r($_FILES["upfile"]); 
    if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ 
    $upfile=$_FILES["upfile"]; 
    //获取数组里面的值 
    $name=$upfile["name"];//上传文件的文件名 
    $type=$upfile["type"];//上传文件的类型 
    $size=$upfile["size"];//上传文件的大小 
    $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径 
    //判断是否为图片 
    switch ($type){ 
    case 'image/pjpeg':$okType=true; 
    break; 
    case 'image/jpeg':$okType=true; 
    break; 
    case 'image/gif':$okType=true; 
    break; 
    case 'image/png':$okType=true; 
    break; 
    } 
    
    if($okType){ 
    /** 
    * 0:文件上传成功<br/> 
    * 1:超过了文件大小,在php.ini文件中设置<br/> 
    * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/> 
    * 3:文件只有部分被上传<br/> 
    * 4:没有文件被上传<br/> 
    * 5:上传文件大小为0 
    */ 
    $error=$upfile["error"];//上传后系统返回的值 
    echo "================<br/>"; 
    echo "上传文件名称是:".$name."<br/>"; 
    echo "上传文件类型是:".$type."<br/>"; 
    echo "上传文件大小是:".$size."<br/>"; 
    echo "上传后系统返回的值是:".$error."<br/>"; 
    echo "上传文件的临时存放路径是:".$tmp_name."<br/>"; 
    
    echo "开始移动上传文件<br/>"; 
    //把上传的临时文件移动到up目录下面 
    move_uploaded_file($tmp_name,'up/'.$name); 
    $destination="up/".$name; 
    echo "================<br/>"; 
    echo "上传信息:<br/>"; 
    if($error==0){ 
    echo "文件上传成功啦!"; 
    echo "<br>图片预览:<br>"; 
    echo "<img src=".$destination.">"; 
    //echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; 
    }elseif ($error==1){ 
    echo "超过了文件大小,在php.ini文件中设置"; 
    }elseif ($error==2){ 
    echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; 
    }elseif ($error==3){ 
    echo "文件只有部分被上传"; 
    }elseif ($error==4){ 
    echo "没有文件被上传"; 
    }else{ 
    echo "上传文件大小为0"; 
    } 
    }else{ 
    echo "请上传jpg,gif,png等格式的图片!"; 
    } 
    } 
    ?> 
    

    php文件上传表单注意事项

    <html>
     <head>
     <meta charset="utf-8" />
     <title>单文件上传</title>
     </head>
     <body>
     <form action="file.php" method="post" enctype="multipart/form-data">
     <input type="file" name="file">
     <input type="submit" value="上传">
     </form>
     </body>
    </html>
    
    <?php
    if ($_FILES['file']['error'] > 0) {
     switch ($_FILES['file']['error']) {
     //错误码不为0,即文件上传过程中出现了错误
     case '1':
     echo '文件过大';
     break;
     case '2':
     echo '文件超出指定大小';
     break;
     case '3':
     echo '只有部分文件被上传';
     break;
     case '4':
     echo '文件没有被上传';
     break;
     case '6':
     echo '找不到指定文件夹';
     break;
     case '7':
     echo '文件写入失败';
     break;
     default:
     echo "上传出错<br/>";
     }
    } else {
    
     $MAX_FILE_SIZE = 100000;
     if ($_FILES['file']['size'] > $MAX_FILE_SIZE) {
     exit("文件超出指定大小");
    
     }
    
     $allowSuffix = array(
     'jpg',
     'gif',
     );
    
     $myImg = explode('.', $_FILES['file']['name']);
    
     $myImgSuffix = array_pop($myImg);
    
     if (!in_array($myImgSuffix, $allowSuffix)) {
     exit("文件后缀名不符");
     }
    
     $allowMime = array(
     "image/jpg",
     "image/jpeg",
     "image/pjpeg",
     "image/gif",
     );
    
     if (!in_array($_FILES['file']['type'], $allowMime)) {
     exit('文件格式不正确,请检查');
     }
    
     $path = "upload/images/";
     $name = date('Y') . date('m') . date("d") . date('H') . date('i') . date('s') . rand(0, 9) . '.' . $myImgSuffix;
    
     if (is_uploaded_file($_FILEs['file']['tmp_name'])) {
    
     if (move_uploaded_file($_FILEs['file']['tmp_name'], $path . $name)) {
     echo "上传成功";
     } else {
     echo '上传失败';
     }
    
     } else {
     echo '不是上传文件';
     }
    
    }
    ?>
    
    <?php 
    var_dump($_FILES); //打印$_FILES查看数组结构 
    ?>
    

    php文件上传进度处理

    <?php
    /*
    开启session。请注意在session_start()之前,请不要有想浏览器输出内容的动作,否则可能引起错误。
    */
    
    session_start();
    
    //ini_get()获取php.ini中环境变量的值
    $i = ini_get('session.upload_progress.name');
    
    //ajax中我们使用的是get方法,变量名称为ini文件中定义的前缀 拼接 传过来的参数
    $key = ini_get("session.upload_progress.prefix") . $_GET[$i]; 
    //判断 SESSION 中是否有上传文件的信息
    if (!empty($_SESSION[$key])) { 
     //已上传大小
     $current = $_SESSION[$key]["bytes_processed"];
     //文件总大小
     $total = $_SESSION[$key]["content_length"];
    
     //向 ajax 返回当前的上传进度百分比。
     echo $current < $total ? ceil($current / $total * 100) : 100;
    }else{
     echo 100; 
    }
    ?>
    

    PHP图像处理

    <?php
    //创建图片
    $img = imagecreatetruecolor(500, 500);
    
    //分配颜色
    $red = imagecolorallocate($img, 255, 0, 0);
    
    $green = imagecolorallocate($img, 0, 255, 0);
    
    $blue = imagecolorallocate($img, 0, 0, 255);
    
    $pur = imagecolorallocate($img, 255, 0, 255);
    
    $yellow = imagecolorallocate($img, 121, 72, 0);
    
    
    //填充背景
    imagefilledrectangle($img, 0, 0, 500, 500, $green);
    
    //画对角线
    imageline($img, 0, 0, 500, 500, $red);
    imageline($img, 500, 0, 0, 500, $blue);
    
    //画圆
    imagefilledellipse($img, 250, 250, 200, 200, $yellow);
    
    //圆中间画矩形
    imagefilledrectangle($img, 200, 200, 300, 300, $blue);
    
    
    //保存图片,图片名为haha.jpg
    imagejpeg($img, 'haha.jpg');
    
    //销毁资源
    imagedestroy($img);
    
    ?>
    

    php开发验证码

    <?php
    
    check_code();
    
    function check_code($width = 100, $height = 50, $num = 4, $type = 'jpeg') {
    
     $img = imagecreate($width, $height);
     $string = '';
     for ($i = 0; $i < $num; $i++) {
     $rand = mt_rand(0, 2);
     switch ($rand) {
     case 0:
     $ascii = mt_rand(48, 57); //0-9
     break;
     case 1:
     $ascii = mt_rand(65, 90); //A-Z
     break;
    
     case 2:
     $ascii = mt_rand(97, 122); //a-z
     break;
     }
     //chr()
     $string .= sprintf('%c', $ascii);
    
     }
     //背景颜色
     imagefilledrectangle($img, 0, 0, $width, $height, randBg($img));
    
     //画干扰元素
    
     for ($i = 0; $i < 50; $i++) {
    
     imagesetpixel($img, mt_rand(0, $width), mt_rand(0, $height), randPix($img));
    
     }
     //写字
     for ($i = 0; $i < $num; $i++) {
     $x = floor($width / $num) * $i + 2;
     $y = mt_rand(0, $height - 15);
    
     imagechar($img, 5, $x, $y, $string[$i], randPix($img));
    
     }
    
     //imagejpeg
    
     $func = 'image' . $type;
    
     $header = 'Content-type:image/' . $type;
    
     if (function_exists($func)) {
     header($header);
     $func($img);
     } else {
    
     echo '图片类型不支持';
     }
     imagedestroy($img);
     return $string;
    
    }
    //浅色的背景
    function randBg($img) {
     return imagecolorallocate($img, mt_rand(130, 255), mt_rand(130, 255), mt_rand(130, 255));
    }
    //深色的字或者点这些干 扰元素
    function randPix($img) {
     return imagecolorallocate($img, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
    }
    
    ?>
    
    <?php
    //关闭错误
    error_reporting(0);
    
    //读取一个不存在的文件,显示错误
    
    //显示错误
    error_reporting(E_ALL & ~ E_NOTICE);
    ?>
    

    请点赞!因为你的鼓励是我写作的最大动力!

    官方微信公众号

    吹逼交流群:711613774

    吹逼交流群

    相关文章

      网友评论

        本文标题:PHP全栈学习笔记32

        本文链接:https://www.haomeiwen.com/subject/gnpooqtx.html