PHP结构控制
流程控制
条件判断语句
循环控制语句
这里说明一下foreach()语句
foreach (array_expression as $value)
statement
这是可以直接拿到值的语句
foreach (array_expression as $key => $value)
statement
在遍历的时候 值 键 都是可以拿到的
跳转语句
上面基本上与类C语言一致
多了一个终止语句 exit()l
void exit([string message]); #语句后的内容不会被执行
PHP EOF(heredoc) 使用说明
作用输出大文本 使用定界符 <<<
1.PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
2.在 PHP 定界符 EOF 中的任何特殊字符都不需要转义;
3.PHP 定界符 EOF
PHP String
PHP 并置运算符
java中使用+连接字符串 ,而php使用 . 连接字符串
echo $txt1 . " " . $txt2;
可以在字符串中使用转义序列进行替换
常用字符函数:
strlen (string $string) {} //求长度 核心库中
function strcmp (string $str1, string $str2) {} //比较字符串
function mb_strlen (string $str, string $encoding = null) {} //指定编码长度
echo mb_strlen("中文字符",'utf-8'); // 输出 4
function strpos (string $haystack, $needle, int $offset = null) {} //搜索字符串是否存在 第三个参数为偏移量
php数组
定义:
一般情况下数组可以分为一维数组,二维数组,多维数组;
在php中这些又分为:
数字索引数组; //也就是C中普通数组的定义方式
关联数组; //类似于C 、Cpp中的map 定义方式并且键值对是不需要连续的额,在数字索引数组下 默认是连续的
数组索引数组:
$numbers = array(1, 2, 3, 4,5);
//sizeof == count
for ($i=0;$i<sizeof($numbers);$i++){
echo $numbers[$i]." ";
}
//改变值
$numbers[0] = "one";
$numbers[1] = "two";
$numbers[2] = "three";
$numbers[3] = "four";
$numbers[4] = "five";
echo " ";
foreach ($numbers as $k){
echo $k." ";
}
关联数组: 关联数组中的键是mixed类型
$salaries = array(
"mohammad" => 2000,
"qadir" => 1000,
"zara" => 500
);
print_r($salaries);
//证明点 由于存在关联 所以可以自己定义 起始键
$arr=array("2"=>"a","4"=>"b");
print_r($arr);
多维数组:
code:
$str = array (
"PHP类图书"=>array ("PHP从入门到放弃","PHP典型模块","PHP标准教程"),
"JAVA类图书"=>array ("a"=>"JAVA范例手册","b"=>"JAVA WEB范例宝典"),
"ASP类图书"=>array ("ASP从入门到放弃",2=>"ASP范例宝典","ASP典型模块")
);
print_r($str);
out:
Array
(
[PHP类图书] => Array
(
[0] => PHP从入门到放弃
[1] => PHP典型模块
[2] => PHP标准教程
)
第三种遍历数组办法:list()拿到键值 each 拿到指针 while)()
这里同样举例遍历上面那个二维数组。
while (list($key,$value)=each($str)) {
while(list($key,$value2)=each($value)){
echo $key."->".$value2;
}
echo " ";
}
out:
0->PHP从入门到放弃1->PHP典型模块2->PHP标准教程
a->JAVA范例手册b->JAVA WEB范例宝典
0->ASP从入门到放弃2->ASP范例宝典3->ASP典型模块
输出数组
前面用到print_r() 来打印数组 ,print_r()打印数组仅仅是打印数组中内容,
实现输出数组中包含更多的信息,可以使用 var_dump()函数
常用函数
创建数组
function range ($start, $end, $step = null) {}
# 创建数组 无论数字还是字母 只以开头为准
# 创建数组
$a=range("1", "26");
$b=range("a", "z");
print_r($b);
#合并数组 以键值对打包
$k=array(1,2);
$v=array("php","jsp");
$res=array_combine($k, $v);
print_r($res);
#创建指定范围数组
$z=array_fill(1, 5, "a");
print_r($z);
#填充满足范围的数组
$res2=array_pad($k, 5, "a");
print_r($res2);
#分割函数
$res3="java@cpp@c@jsp@asp";
$res4=explode("@", $res3);
print_r($res4);
统计函数
# 次数
echo " ".count($res4);
# 最大值小值
$arr1=range(1, 100);
$max1=max($arr1);
$min1=min($arr1);
echo " "."$max1"." "."$min1";
# 求和
echo " ".array_sum($arr1);
# 出现次数
$x=array("a","b","c","b");
print_r(array_count_values($x));
指针函数
# 当前指键
print_r(key($x));
echo "->";
# 当前指值
print_r(current($x));
# 下一个
print_r(next($x));
echo " ";
# 末尾
print_r(end($x));
# 上一个
print_r(prev($x));
# 回到头指针
print_r(reset($x));
数组和变量之间的转换
# 转为变量
$res5=array("name"=>"张三","age"=>24);
extract($res5);
print " ";
print $name; print $age;
# 打包为数组 有时会写错 为不要$的变量名字
$name1="李四";
$age=25;
print_r(compact("name1","age"));
交换函数
array_keys()函数 拿到所有键
array_values()函数 拿到所有值
in_array()函数 是否存在于其中
array_search()函数 数组搜索函数
array_key_exists()函数 键是否存在
array_unique()函数 数组去重
排序函数
下面是排序的第三个参数需要理解的
* SORT_REGULAR - compare items normally
* (don't change types)
* <br>
* SORT_NUMERIC - compare items numerically
* <br>
* SORT_STRING - compare items as strings
* <br>
* SORT_LOCALE_STRING - compare items as
# 随机数据测试
$array=array();
for($i=a;$i<z;$i++){
$array[$i]=rand(10,1000);
}
# 生成新的数字索引数组
echo sizeof($array);
sort($array);// 1为执行成功
print_r($array);
# 重新赋值 //必须设置null
$array=null;
for($i='A';$i<'Z';$i++){
$array["$i"]=rand(10,1000);
}
asort($array);
print_r($array);
rsort()和arsort()函数 前面一样反向
ksort()和krsort()函数 根据键值排序
natsort()和natcasesort()函数 按照自然排序 第二个忽略大小写
shuffle()函数 打乱函数
array_reverse()函数 数组反向函数
数据结构函数
# 末尾添加一个元素
$array=array();
for($i=0;$i<10;$i++){
array_push($array, "$i");
}
# 末尾移除一个元素
array_push($array);
# stack头删除元素
array_shift($array);
# 头插入一个元素
array_unshift($array, "ss");
集合函数
$a=array(1,2,3,4,5);
$b=array("a","b","c","d",1);
// 合并
print_r(array_merge($a,$b));
// 差集
print_r(array_diff($a,$b));
//带索引的差集
print_r(array_diff_assoc($a,$b));
array_diff_key()
array_intersect()函数
array_intersect_assoc()函数
array_intersect_key()函数