PHP基础知识
php 的代码 写在 <?php 代码 ?> 标签里面
1.声明变量
就用一个 $ 就可以了
例如 $ a = 10; // 定义一个变量 并且付给他的值是10
php 也是一种弱类型的语言 即生明白能量不需要区分类型
$number3 = 0123; // 8进制
$number4 = 0x123; // 16进制
$name = 'zzr'; 字符串类型
$array = array(); // 定义一个数组 这里面的数组类比JavaScript就相当于同时具有数组和对象的性质
$foo = ""; // 定义一个空的变量
//字符串类型
$name = 'zzr';
$string = 'string $name'; // 单引号里面变量不会被解析
$string2 = "string $name"; // 在双引号里面变量会被解析
//EOF 多行
$string3 = <<<EOF
string $name
string $name
EOF;
2.PHP 的各种输出
1.echo
echo 就是用来输出一个或者过个字符砖的一个语句
如果这样使用 echo($foo) 这样 #foo 会被当做参数传递 会报错的
<?php
echo "Hello world!"; // 输出 Hellow world 这里也可以是一个变量
?>
<?php
$str = "Hello world!";
echo $str; // 把变量里面保存的字符串输出
?>
<?php
$str = "Hello world!";
echo $str;
echo "<br>What a nice day!"; // 可以解析HTML 标签
?>
<?php
$str1="Hello world!";
$str2="What a nice day!";
echo $str1 . " " . $str2; // 输出 运算后的结果 总之就是 echo 后面可以是一行代码 输出的就是运算之后的结果
?>
2.print
和echo一样 就是一个输出语句 拘束echo 会比 print 快一点
同样 print($foo) 是解析错误的
如果您希望向print() 传递一个以上的参数,那么使用括号会发生解析错误。注意print总是返回1的,这个和echo不一样
<?php
$a = print("alice"); // 这个是允许的
echo $a; // $a的值是1
?>
<?php
$str = "I love Shanghai!";
print $str; // 输出 #str 变量里面保存的字符串
?>
<?php
$str = "I love Shanghai!";
print $str;
print "<br>What a nice day!"; //print 的方式输出 同样会解析HTML 标签
?>
<?php
$str1 = "I love Shanghai!";
$str2="What a nice day!";
print $str1 . " " . $str2; // print 输出的是 运算过后的结果
?>
3.print_r 函数
print_r — 打印关于变量的易于理解的信息。 --相当的不好理解啊! 解释一下把:如果变量是string , integer or float , 将会直接输出其值,对于关联数组就不一样了他会把关联数组整理好了在打印出来,就是键值对
形式对于object对象类同。print_r有两个参数,第一个是变量,第二个可设为true,如果设为true,则会返回字符串,否则返回 “1” 第二个变量的默认值是false。
什么是关联数组呢?下面会介绍的
<?php
$zzr = "zhangzhongren";
$zz = print_r($zzr); //zhangzhongren
echo print_r($zzr); // 11 这里面执行 print_r($zzr) 的时候输出了一个 1 然后 echo 又输出了一个1
$zz = print_r($zzr,false); //zhangzhongren 默认值是false
echo $zz;//1
?>
4、printf函数
返回一个格式化的字符串 学过C的都应该用过 C语言的printf吧 这里面的和C语言的感觉差不多
语法:printf(format,arg1,arg2,arg++)
参数 format 是转换的格式,以百分比符号 (“%”) 开始到转换字符结束。下面是可能的 format 值:
* %% – 返回百分比符号
* %b – 二进制数
* %c – 依照 ASCII 值的字符
* %d – 带符号十进制数
* %e – 可续计数法(比如 1.5e+3)
* %u – 无符号十进制数
* %f – 浮点数(local settings aware)
* %F – 浮点数(not local settings aware)
* %o – 八进制数
* %s – 字符串
* %x – 十六进制数(小写字母)
* %X – 十六进制数(大写字母)
arg1, arg2, arg++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的,在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。如果 % 符号多于 arg 参数,则您必须使用占位符。
占位符被插入 % 符号之后,由数字和 “\$” 组成。
<?php
printf("My name is %s %s。","zzr", "com"); // My name is zzr com。
printf("My name is %1\$s %1\$s","zzr", "com"); // 在s前添加1\$或2\$.....表示后面的参数显示的位置,此行输出 My name is zzr zzr因为只显示第一个参数两次。
printf("My name is %2\$s %1\$s","zzr", "com"); // My name is com zzr
?>
5、sprintf函数
此函数使用方法和printf一样,唯一不同的就是该函数把格式化的字符串写写入一个变量中,而不是输出来。
<?php
sprintf("My name is %1\$s %1\$s","alice", "com"); //没有任何东西输出
$out = sprintf("My name is %1\$s %2\$s","zzr", "com");
echo $out; //输出 My name is zzr com
?>
3.PHP的语句
1.赋值语句
$name = 'gan'; //赋值语句
2.条件语句
if($name == 'zzr'){ echo "您的登录身份是zzr"; echo "欢迎您回来"; }else if($name == "gan"){ echo "您是VIP身份"; }else if($name == "bao"){ echo "您是白金会员"; }else{ echo "您尚未登录"; echo "<a href = \"\">点击登录</a>"; }
注意 :浮点数的运算存在精度的问题 不能直接相比较 if()的判断条件里面两个浮点数是不能直接比较的
在需要判定类型的时候 一定要 用 ===
短路运算 || 只要第一个满足 第二个就会被 忽略 && 第一个不满足 第二个就忽略
空字符 null "0" 0 未定义的变量 为 false
3.三目运算符
$c = $a>$b?$a:$b; //取两个之中的大的
4.分支结构
1.switch语句
多分枝 switch 分支里可以嵌套 $weekday = 1; switch($weekday){ case 1: echo "周一"; break; case 2: echo "周二"; break; default: echo "周末"; }
5.PHP 数组
和别的语言的数组的作用一样:数组能够在单独的变量名中存储一个或多个值。
$array = array(); // 定义一个数组 $array[0] = "数组第一个空间"; $array[1] = "数组第二个空间"; $array['no1'] = "关联数组1"; $array['no2'] = "关联数组2"; $array[] = "数组三"; // [] 里面是空的 自动取最大的键值 加一 $array[] = "数组四"; $array[6] = "数组六"; // 可以跳步 可以任意指定键值
print_r($array);//Array ( [0] => 数组第一个空间 [1] => 数组第二个空间 [no1] => 关联数组1 [no2] => 关联数组2 [2] => 数组三 [3] => 数组四 [6] => 数组六 )
注:PHP中有三种数组
1.索引数组 - 带有数字索引的数组
$cars=array("Volvo","BMW","SAAB");
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
创建索引数组的两种方式
遍历索引数组
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars); // count() 方法 用来获取索引数组的长度
for($x=0;$x<$arrlength;$x++) { // for循环遍历数组 虽然这里面 foreach 也可以进行遍历不过还是推荐用for循环进行遍历
echo $cars[$x];
echo "<br>";
}
?>
2.关联数组 - 带有指定键的数组
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
创建关联数组的两种方式
遍历关联数组
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age as $x=>$x_value) { // $age 需要遍历的数组 as $x 键值对的键 $_value 键值对的值
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
3.多维数组 - 包含一个或多个数组的数组
多维数组指的是包含一个或多个数组的数组。
PHP 能理解两、三、四或五级甚至更多级的多维数组。不过,超过三级深的数组对于大多数人难于管理。
简单一点来说就是 一个array() 就是一个一维数组 很多个 array() 嵌套在一起不就是多维数组了吗
$zzr = array
(
array("one",22,18),
array("two",15,13),
array("three",5,2),
array("four",17,15)
);
上面的就是一个多维数组 最外面一级包括四个索引数组 每个关索引组又包含一个索引数组这就组成了一个简单的二维数组了
下面说一下二维数组的遍历 : 遇到关联数组的层级 尽量用 foreeach 遇到索引数组的层级用 for循环来遍历 即:用循环的嵌套来遍历数组
$len = count($zzr);
for($i=0;$i<$len;$i++){
$_len = count($zzr[$i]);
for($j=0;$j<$_len;$j++){
echo $zzr[$i][$j];
}
}
这里在简单介绍一下 数组和HTML标签的配合使用
$shooping = array();
$shooping[0] = array("干慧琳","免费",1);
$shooping[1] = array("胞大姐","免费",1);
$shooping[2] = array("阿丽","免费",1);
<table> <?php foreach($shooping as $key => $val){ ?> // 这里是遍历数组第一级 <tr> <?php foreach ($val as $keys => $value){ ?> // 这里是遍历数组的第二级 <td><?=$value?></td> // 把内容拼接到表格里面 <?php } ?> </tr> <?php } ?> </table>
这里面创建多少个tr 由数组的第一级的长度决定 每一个tr 有多少的 td 由数组的第二级决定
6.函数
首先我们先定义一个函数
function maFunction($param2,$param = "zzr"){ // 向函数里面传入两个参数 这里要注意有默认值的参数应该放在后面
echo $param."hellow World";
}
我么还可以把函数保存在一个变量里面
$func = function(){
echo "hellow World";
}; // 这里面的 ";" 是一定不能少的 虽然这是一个函数的结尾大括号 但是总的来看这是一个赋值语句 把函数赋值到变量里面
关于函数题里面声明的变量 当然只有在函数题里面有效了 ,想要把他升级为全局变量 就需要用到 关键字 global
//在函数体内部可以使用 global 关键字 将 变量定义为全局变量
function addFunction(){
global $a;
}
函数的传参 和引用传值
function myFunction2($a){ //这里只是传递了一个形参 传进函数的只是值而不是变量本身
$a --;
echo $a;
}
$b = 10;
myFunction2($b);
echo $b; //10;
function myFunction2(&$a){ // 这里面出金函数的是变量本身 & + 形参的形式
$a --;
echo $a;
}
$b = 10;
myFunction2($b);
echo $b; //9
use() 内层函数调用外层变量的时候要用use()将变量传递给内部的函数
function getFunction(){ $arrar = array(); for($i=0;$i<10;$i++){ $arrar[$i] = function()use($i){//定义函数定返回给$arrar return 10 + $i; }; } //$funcArray 是一组函数 return $arrar; }