<?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 数学常用函数

获取时期时间信息函数

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的更多相关文章

  1. PHP全栈学习笔记12

    php简介,php历史,php后端工程师职业前景,php技术方向,php后端工程师职业体系介绍. php是世界上使用最广泛的web开发语言,是超文本预处理器,是一种通用的开源脚本语言,语法吸收了c语言 ...

  2. PHP全栈学习笔记7

    图形图像处理技术,gd库的强大支持,PHP的图像可以是PHP的强项,PHP图形化类库,jpgraph是一款非常好用的强大的图形处理工具. 在PHP中加载GD库 gd官方网址下载: http://www ...

  3. PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与优化 程序设计,PHP框架基础知识,算法,逻辑思维,高并发 PHP基础知识 引用变量, ...

  4. python全栈学习笔记(二)网络基础之子网划分

    阅读目录 一.ip地址基本知识 1.1 ip地址的结构和分类 1.2 特殊ip地址 1.3 子网掩码 1.4 ip地址申请 二.子网划分 2.1 子网划分概念 2.2 c类子网划分初探 2.3 子网划 ...

  5. python全栈学习笔记(一)网络基础之网络协议篇

    阅读目录 一.操作系统基础 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 2.2 osi七层协议 2.3 tcp/ip五层模型讲解 2.3.1 物理层 2.3.2 数据链路层 2.3.3 ...

  6. PHP全栈学习笔记29

    前言 这一章主要讲一讲PHP的背景,优势,PHP的环境搭建,书写和调式简单的PHP代码,如何解决简单的PHP错误等. 目录结构 PHP简介 PHP是面向对象,指令式编程,设计者是 拉斯姆斯·勒多夫 出 ...

  7. PHP全栈学习笔记13

    php与ajax技术 web2.0的到来,ajax逐渐成为主流,什么是ajax,ajax的开发模式,优点,使用技术.(ajax概述,ajax使用的技术,需要注意的 问题,在PHP应用ajax技术的应用 ...

  8. PHP全栈学习笔记17

    phpmyadmin教程 管理页进入phpmyadmin 打开C:\wamp\apps\phpmyadmin3.5.1下的配置文件:config.inc 修改密码 创建与修改数据库.数据表 字段类型 ...

  9. PHP全栈学习笔记16

    <?php $fileName = "php大师.test.php"; //补充程序,显示文件名(不包括扩展名) $start = strrpos($fileName, &q ...

随机推荐

  1. Harbor 批量清理历史镜像

    公司 Harbor 仓库一年多没清理,硬盘被堆满了,为此写了个批量清除的 Python 脚本. 源代码见 github-harbor_clean.py # coding: utf-8 from ope ...

  2. 对称加密,非对称加密,数字签名,https

    对称加密和非对称加密 对称加密 概念:加密秘钥和解密秘钥使用相同的秘钥(即加密和解密都必须使用同一个秘钥) 特点:一对一的双向保密通信(每一方既可用该秘钥加密,也可用该秘钥解密,非对称加密是多对一的单 ...

  3. 用ASP.NET Web API技术开发HTTP接口(二)

    在第一部分,我们创建了一个基本的ASP.NET Web API项目,新建成功了数据表,然后添加了一些测试数据,最后创建了API控制器,用json格式把数据表里面的内容成功输出到浏览器上.接下来我们将继 ...

  4. 第二次用map23333

    度熊所居住的 D 国,是一个完全尊重人权的国度.以至于这个国家的所有人命名自己的名字都非常奇怪.一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字.例如, ...

  5. javascript序列化表单追加参数

    js序列化表单后追加参数方式: 追加参数:token,status var data = $.param({"token":token, "status":st ...

  6. google mock C++单元测试框架

    转:google mock C++单元测试框架 2012-03-12 09:33:59 http://blog.chinaunix.net/uid-25748718-id-3129590.html G ...

  7. java List<String>的初始化 的一个小问题

    今天在处理生成excel的时候用到了java的list,但是需要直接赋值固定的几个变量,如果先初始化然后add的方法: List<String> name = new ArrayList( ...

  8. java 扫描微信公众号二维码,关注并登录逻辑

    场景:户扫描微信公众号的二维码,关注后自动登录网站,若已关注则直接登录. 逻辑: 系统生成带参数的临时二维码:参数 scene_str 自定义为唯一值(可以是uuid),临时二维码的生成方式参照官方接 ...

  9. Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?

    今天想把之前的一个demo用Nginx把资源分离开来,在网上看了一天,整整弄了一天,硬是没弄出来. 要么全是同样的内容的,要么就是环境跟我这里不一样的.再加上对Nginx没接触过,给我都整哭了差点. ...

  10. 【深度学习】Precision 和 Recall 评价指标理解

    1. 四种情况 Precision精确率, Recall召回率,是二分类问题常用的评价指标.混淆矩阵如下: 预测结果为阳性 Positive 预测结果为假阳性 Negative 预测结果是真实的 Tr ...