有两种在浏览器输出文本的基础指令:echo 和 print
echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
PHP is fun!";
echo "Hello world!
";
echo "I'm about to learn PHP!
";
echo "This", " string", " was", " made", " with multiple parameters.";
?>
以$开头,大小写敏感
弱类型,不必声明类型
<1>(整个脚本中)自动全局
<2>没有$开头
<3>可以设置(常量名)大小写是否敏感
, true);
echo greeting;
?>
<4>在函数内直接引用常量,不需要像变量那么麻烦
<5>函数外可以直接引用函数内定义的常量
<1>函数内不能直接访问全局变量
测试函数内变量:";
echo "变量 x 为: $x"; //这样的方法访问不到全局的$x,所以这里输出为空
echo "
";
echo "变量 y 为: $y";
}
myTest();
echo "
测试函数外变量:
";
echo "变量 x 为: $x";
echo "
";
echo "变量 y 为: $y";
?>
<2>使用$GLOBAL可以在函数内访问全局变量
<3>static作用域
定义在函数内的变量,每次调用完都是清空的,但是加了static他就可以保存住
对于全局变量来说,有没有static没有差别
对一个局部变量来说,加了static并不会改变他的作用域
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)
可以说一个Array搞定一切
<1>整型
";
$x = -345; // 负数
var_dump($x);
echo "
";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "
";
$x = 047; // 八进制数
var_dump($x);
?>
<2>浮点型
";
$x = 2.4e3;
var_dump($x);
echo "
";
$x = 8E-5;
var_dump($x);
?>
<3>布尔型
$x=true;
$y=false;
<4>数组
-数组里面可以是键值对,还可以用"+"将两个数组连接成一个数组
"red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z=$x+$y;
echo $z['a'];
$x['a']="black";
echo "
";
echo $z['a'];//red
echo "
";
echo $x['a'];//black
?>
可以看到这个$z已经把所有元素复制过去,而非仅仅是一个引用,改变了原数组的元素,并不会改变$z的元素。
-遍历数组
";
}
?>
-关联数组(键值对)
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");//创建方法1
//创建方法2
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
-遍历关联数组
"35","Ben"=>"37","Joe"=>"43");
foreach($age as $myKey=>$myValue)
{
echo "Key=" . $myKey . ", Value=" . $myValue;
echo "
";
}
?>
color = $color;
}
function what_color() {
return $this->color;
}
}
?>
<6>NULL
<1>三元运算符
<1>sort()升序排列
<2>rsort()降序排列
<3>asort()根据值升序排列
<4>ksort()根据键升序排列
<5>arsort()根据值降序排列
<6>krsort()根据键降序排列
<7>数组倒转(顺序反过来):
$orders = array_reverse($orders);
<1>$GLOBALS
用来引用全局变量
<2>$_SERVER
";
echo $_SERVER['SERVER_NAME'];//主机名(域名)
echo "
";
echo $_SERVER['HTTP_HOST'];//请求头中host的内容
echo "
";
echo $_SERVER['HTTP_REFERER'];//引导用户代理到当前页的前一页的地址(该值不可信)
echo "
";
echo $_SERVER['HTTP_USER_AGENT'];//
echo "
";
echo $_SERVER['SCRIPT_NAME'];//包含当前脚本的路径
?>
<3>$_REQUEST
用于收集HTML表单提交的数据
<4>$_POST
收集表单数据
<5>$_GET
url = $par1;
$this->title = $par2;
}
/* 成员函数 */
function setUrl($par){
$this->url = $par;
}
function getUrl(){
echo $this->url . PHP_EOL;
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title . PHP_EOL;
}
}
$runoob = new Site('www.runoob.com', '菜鸟教程');
$taobao = new Site('www.taobao.com', '淘宝');
$google = new Site('www.google.com', 'Google 搜索');
// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();
$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();
?>
include、require、use
include、require:相当于把代码包含进来,就是那个引用的文件把这一行代码代替了,这个要包含的文件 必须是包含的,路径最好用正斜杠
include如果找不到会报一个警告然后继续执行,require则会报错误并且停止执行,如果是系统配置,缺少了不能允许,则我们应该用require
include_once、require_once:加了once之后,系统会判断,如果已经添加了,则不会添加第二次,但是系统做这个判断效率会降低,因此应该尽量靠系统架构使其不会重复加载,然后代码上面尽量不要用once影响效率
use:相当于java的import
a.php
单引号不解释(直接输出),双引号会经过解释
// 测试实例如下:
$total1 = 40;
echo 'page_num1='.ceil($total1/30);//2
$total2 = 30;
echo 'page_num2='.ceil($total2/30);//1
$total3 = 20;
echo 'page_num3='.ceil($total3/30);//1
$total4 = 0;
echo 'page_num4='.ceil($total4/30);//0
上面提到的strlen函数计算字符串长度的时候,并非完美。
当字符串里面含有中文的时候,如果是utf-8格式的,每个中文将会计算为3个字符。
因此我们需要另一个统计函数,这个统计函数每个中文只统计为1。
$length = mb_strlen($item_name,'utf8');
截取字符串,配合mb_strlen使用,第一个参数是原字符串,第二个参数是起始位置(从0开始),第三个参数是截取的长度,第四个参数是编码。
$str = mb_substr($item_name,0,10,'utf8');
-strpos()返回一段字符串在另一个字符串中的index
查找在给定字符串内有没有存在某子字符串,如果有则返回其第一次出现的位置,如果没有则返回false
使用方法:
if (strpos($from,$find) === false)
{
// 这里是找不到
}else
{
// 这里是找到了
}
$str1 = strstr($from,$find,true);// 返回分隔符之前的部分,不包含分隔符
$str2 = strstr($from,$find);// 返回分隔符之后的部分,包含分隔符
$str = substr($fromSku2,1);// 从第2个字符开始截取
$orderId = number_format($orderId,0,'','');
$name = basename($imgUrl);
$skuArr = mb_split('\s','hello world');
Array (
[0] => hello
[1] => world
)
$str = 'https://product.suning.com/0070152707/10042045173.html';
$find = '/';
$index = strripos($str,$find,0);
exit('test='.$index);//37
注意:如果是找不到则返回false
判断一个变量是否存在。
比如,当一个json解析之后,我们要看其中一个字段是否存在,比如这个请求返回的是正确还是错误,如果返回正确,那么字段里面没有'error';如果返回错误,返回的字段里面有'error',我们不能直接:
if($obj->{'error'} == null)
{
exit('返回错误');
}else
{
exit('返回正确');
}
if(isset($obj->{'error'}))
{
exit('返回错误');
}else
{
exit('返回正确');
}