PHP全栈学习笔记32

<?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);
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券