php基础
自定义配置
ini_set()
在php文件最上方添加来配置php变量
ini_set('max_execution_time','60');
//php给脚本设定较大执行时间
数据输出
printf() 输出到浏览器
将动态数据插入到静态的字符串中,并输出到浏览器。
printf("%s的年龄是%d工资是%f",'jiaoguoqiang',35,3500.88);
//jiaoguoqiang的年龄是35工资是3500.880000
%为占位符
%d 十进制正数
%s 字符串
%f 浮点数
sprintf() 赋值给字符串
$name = 'jiaoguoqiang';
$age = 34;
$gongzi = 5000;
echo sprintf("%s的年龄是%d工资是%d",$name,$age,$gongzi);
//jiaoguoqiang的年龄是34工资是5000
数据类型
字符串可以看作是数组 可以使用数组方式访问
$name = "jiaoguoqiang";
echo $name[2];
//a
强制类型转换
float 转换为 int 向下取整
echo (int) 14.8;//14
string 转换为 int 返回0
echo (int) "jiaoguoqiang";//0
强制转换为数组
只适用于新创建数组的第一个成员,如果强制转换一个已经存在的数组,原数组竟被清空,只是第一个位置上保留这个新转换的值
$score = 'jiaook.com';
$scorearr = (array) $score;
echo $scorearr[0];
//jiaook.com
强制转换为对象 该变量变为对象的一个属性
$obj = (object) "jiaook";
var_dump($obj);
//object(stdClass)#1 (1) { ["scalar"]=> string(6) "jiaook" }
echo $obj->scalar;// jiaook
类型自动转换
字符串以数字开头,所以可以计算,如果是非数字的内容开头,数值为0
$total = '45 fire engines';
$incoming = 10;
echo $total = $total + $incoming;//55
$total = 'fire engines 45';
$incoming = 10;
echo $total = $total + $incoming;//0
数据类型有关的函数
gettype()获取类型
gettype()函数返回var所指定变量的类型。共有8个可能的返回值: array、 boolean、
double、integer、object、resource、 string 和unknown type。settype ()设置类型
settype ()函数将var指定的变量转换为type指定的类型。type有7个可取值: array、
boolean、float、 integer、 null、object 和string。如果转换成功,则返回TRUE;否则,返回FALSE。
$name = "jiaoguoqiang";
echo '<pre>';
var_dump(settype($name,'int'));
echo '</pre>';
类型标识符函数
可以用很多函数来确定变量的类型,包括is array()、is bool()、 is float()、isint-eger()、is nul1()、is numeric()、is object() 、is resource() 、is scalar() 和is_ string()。 因为所有这些函数都有相同的命名约定、参数和返回值。
var_dump(is_int(11111));//bool(true)
var_dump(is_int("11111"));//bool(false)
变量作用域
局部变量
在函数中声明的变量是局部变量,即它只能在该函数中引用。如果在函数外赋值,将被认为是完
全不同的另一个变量(即不同于函数中所包含的那个变量)。注意,退出声明变量的函数时,该变量及相应的值就会被撤销。
函数参数
虽然在声明参数的函数内部可以访问和处理这些函数参数,但当函数执行结束时,参数就会被撤销。第4章将讲解更多关于函数的内容。
全局变量 global
global $arr;
$GLOBALS["$arr"];
静态变量
变量作用域称为静态(static) 作用域。与声明为函数参数的变量不同,函数参数在函数退出时会被撤销,而静态变量在函数退出时不会丢失值,并且还能保留这个值以便再次调用此函数时使用。在变量名前面加上关键字STATIC就可以声明一个静态变量:
function keep_track(){
static $count = 0;
$count++;
echo $count;
echo "<br>";
}
keep_track();
keep_track();
keep_track();
//1 2 3
function keep_track(){
$count = 0;
$count++;
echo $count;
echo "<br>";
}
keep_track();
keep_track();
keep_track();
//1 1 1
超全局变量
$_SERVER['REMOTE_ADDR']; //返回客户端ip地址
$_SERVER['HTTP_USER_AGENT'];//返回浏览器信息
$_SERVER['REQUEST_URI'];//url路径部分
$_GET获取变量
$_POST获取变量
$COOKIE
$FILES 获取$_POST上传的数据
操作符
优先级
先算乘除 后算加减 括号优先级高
结合性
从左向右
$value =3*4*5*7*2;
//等价于
$value = ((((3 ★4)★5)*7)*2);
从右到左
$c=5;
$value = $a = $b = $c;
//等价于
$c=5;
$value=($a=($b=$c));
字符串操作符
. 字符串拼接
$a = 'abc'.'def'; //拼接
.= 拼接
$a .= 'abcd';//$a等于当前值与abcd拼接的结果
自增自减
这些操作符可以放在变量的任意一边,但放的位置不同会有一些略微不同的效果。
$inv = 15;
//赋整数值 15给$inv .
$oldInv = $inv++; // 把$inv 的值赋给$oldInv,然后$inv自增
$origInv = ++$inv; // $inv 自增,然后把新的$inv值赋给$origInv
可以看出,自增和自减操作符使用的顺序对变量的值有重要影响。
将操作符放在操作数前面称为前自增 和前自减运算,而放在后面则称为后自增和后自减运算
三元运算符
($a == 12) ? 5 : -1;
如果$a等于12,返回值为5;否则返回值为-1
字符串插入
双引号
解析变量 转义序列
单引号
当字符串应当按照声明形式的原样解释时,可以用单引号括起这个字符串。这表示,解析字符串
时变量和转义序列都不会被解析。
print This string will $print exactly as it's n declared. ';
//This string will $print exactly as it's n declared.
注意,“it’s" 中的单引号进行了转义。忽略反斜杠转义字符将导致语法错误。
print 'This is another string.' ;
//This is another string.
此例中,在字符串最后出现的反斜杠必须转义,否则PHP解析器会理解为最后一个单引号将被转
义。但是,如果反斜杠出现在字符串的其他位置,就不需要转义。大括号{}
在字符串中,用{$a}解析变量
echo "Thecapital ofOhiois {$capitals[ 'ohio']}
heredoc
需要处理大量内容,又不希望使用转义引号。
变量和转义序列都会解析,双引号不需要转义Nowdoc
循环
foreach
$links = ['焦国强博客'=>'www.jiaook.com','泰安网站建设'=>'www.taianx.com','泰安信息港'=>'i0538.com']; foreach ($links as $key => $value) { echo $key.'---'.$value; }
break
如果遇到一个break语句,立即结束整个循环
不带bread
$primes = [1,3,5,7,9,10,20,23,24,25,35,45,46,48,50]; for ($i=0; $i <10 ; $i++) { $rand = rand(1,50); if (in_array($rand,$primes)) {
} else {
echo $rand.'<br>';
}
}
//38,34,4,47,15,30,14,
#### 带break
```php
$primes = [1,3,5,7,9,10,20,23,24,25,35,45,46,48,50];
for ($i=0; $i <10 ; $i++) {
$rand = rand(1,50);
if (in_array($rand,$primes)) {
break;
} else {
echo $rand.',';
}
}//如果$rand的数字在数组中,就立刻结束循环,什么也不输出。
//如果$rand的数字不在数组中,就输出,直到在数组中结束
goto
通过添加goto语句,你可以直接跳到一个循环或条件构造之外的某个特定位置。
for ($i=0; $i < 5; $i++) {
$rand = rand(1,20);
if ($rand < 5 ) {
goto less;
} else {
echo '大于10的数字'.$rand.'<br>';
}
}
less:echo 'goto小于5的数字'.$rand.'<br>';
//大于10的数字20 goto小于5的数字1
continue
continue语句是满足当前条件的循环不执行,跳过当前循环,继续执行下个循环。
$usernames = ['jiaoguoqiang','hanyan','minghan','yueyue','yuxia'];
for ($i=0; $i < count($usernames); $i++) {
if ($usernames[$i] == 'minghan') {
continue;
}
else{
echo $usernames[$i];
}
}
//jiaoguoqiang hanyan yueyue yuxia
文件包含语句
include()
include(‘/index.php’);
include ‘/index.php’;
如果根据条件来执行include语句,必须放到打括号中。
所包含文件中都所有代码都会继续继承其调用者谓之处都变量作用域
远程调用
php配置指令allow_url_fopen开启,可以使用incloud()引用远程文件。
require()
require()和include()之间有两点重要的区别。
首先,无论require()的位置如何,指定文件都将包含到出现require()的脚本中。例如,即使require()放在计算为假的if语句中,依然会包含指定文件!第二个重要的区别是: require()出错时,脚本将停止执行,而在使用include()的情况下,
脚本将继续执行。一种可能的错误是require()语句错误地引用了目标路径。
只有启用allow_url_fopen时(这是默认值),才可以在require()中使用URL。