“To be a better girl ”
PHP 变量
-
定义在函数外部的就是全局变量
作用域从定义处一直到文件结尾
-
函数内定义的变量就是局部变量
作用域为函数定义范围内
- 函数之间存在作用域互不影响
- 函数内访问全局变量需要
global
关键字或者使用$GLOBALS[index]
数组
在函数中直接使用全局变量
- 通过
global
关键字声明 -
通过
php
中自定义的$GLOBALS
数组获取<?php $a=5; $b=3; function t1() { global $a,$b; echo $a-$b; // 输出 2 } t1(); echo PHP_EOL; function t2() { echo $GLOBALS['a']-$GLOBALS['b']; // 输出 2 } t2(); ?>
echo 和 print 语句
-
echo()
:可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
-
print()
:打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false
-
print_r()
:打印复合数组,以括起来的键和值得列表形式显示,并以Array开头。
print_r()
输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用var_dump()
函数更适合调试。 -
var_dump()
:判断一个变量的类型与长度,并输出变量的数值 如果变量有值输的是变量的值并回返数据类型。 此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
$c=[1,2,3,4];
print_r($c);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
var_dump($c);
/* D:\E\code\web\PHPStudy\basic\basic_01.php:12:
array (size=4)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
*/
EOF(heredoc)
- 必须后接分号,否则编译通不过。
- EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致
- 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号
- 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义
数据
类型
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
常量
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
默认大小写敏感
define("GREETING", "hello", true);
//echo greeting;
function greet(){
echo "say ",greeting; //say hello
define("user","chaoran",true);
}
greet();
echo user; // chaoran
字符串
- 并置运算符
.
strlen()
返回字符串长度strpos()
在字符串内查找一个字符或一段指定的文本
echo strlen("hello world") // 12
echo strpo("hello world","world") // 6
数组
- 数值数组
- 数字 id
- count() 返回数组长度
- 遍历 for
$cars=array("Volvo","BMW","Toyota");
- 关联数组
- 遍历 foreach
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
PHP 包含文件
- require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
- include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
include 'filename';
// 或者
require 'filename';
文件
文件处理
-
fopen()
打开文件
$file = fopen("welcome.txt", "r"); // 无法打开则返回0(false) $file=fopen("welcome.txt","r") or exit("Unable to open file!"); // 打不开时生成一段消息
-
fclose()
关闭文件
-
EOF
检测文件末尾
feof($file)
-
fgets()
逐行读取文件
-
fgetc()
逐字符读取文件
文件上传
-
form enctype
规定了提交表单时的内容类型,二进制数据 “multipart/form-data”
-
type="file"
把输入作为文件处理
-
$_FILES["file"]["prams"]
第二个下标可以是 “name”、”type”、”size”、”tmp_name” 或 “error”
-
file_exists(path/filename)
判断文件是否存在
-
move_uploaded_file($_FILES["file"]["tmp_name"], newpath)
<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp); // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
// && ($_FILES["file"]["size"] < 204800) // 小于 200 kb
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
// 判断当期目录下的 upload 目录是否存在该文件
// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}
else
{
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "非法的文件格式";
}
?>
php 视频教程
web 服务器
接收用户请求,回复用户的数据
-
nginx
- 轻量级的web 服务器/反向代理服务器
- 占有内存少,并发性强
-
apache
请求过程
tips
- 查看域名对应ip
- ping
- nslookup
- netstat
-
netstat -an more 查看监听端口,如果有 more 表示分页
-
netstat -anb more 查看哪个程序在监听端口
-