定义二维数组
$a[][]=20;//二维数组
$c=array(20,30,[10,80]);
echo '<pre>';
print_r($c);
sort()升序 rsort()降序
$a=[10,50,1,2,5,80,40,58,33,22];
echo '<pre>';
print_r($a);
sort($a);
echo '<pre>';
print_r($a);
asort()升序保留索引位置 asort()降序保留索引位置
$a=[10,50,1,2,5,80,40,58,33,22];
echo '<pre>';
print_r($a);
asort($a);
echo '<pre>';
print_r($a);
$n['hn']=['郑州','上海','北京','广州','洛阳'];
$n['bj']=['aa','bb','cc','dd'];
ksort($n);
print_r($n);
array_values()取出数组值索引全部重新分配,建立索引数组
$a=['aa'=>20,5,6,'zz'=>'郑州'];
$b=array_values($a);//取出数组值索引全部重新分配,建立索引数组
echo '<pre>';
print_r($a);
print_r($b);
array_merge($a,$b)将多个数组合并成一个数组k值相同将保留最后一个值
$a=[5,10,80,90,3,50,40];
sort($a); //升序
$b=array('aa'=>'你好',10000);
$c=array_merge($a,$b);//k值相同将保留最后一个值
//将多个数组合并成一个数组
echo '<pre>';
print_r($c);
var_dump($a); 打印出数组的类型和值
$a[][]=20;
var_dump($a);
$_SERVER['SERVER_SOFTWARE'] 显示服务器,php信息,及主机系统信息
echo $_SERVER['SERVER_SOFTWARE'];
foreach 遍历输出
$arr=array('ok',100);
foreach($arr as $k=>$v){
echo $k.'='.$v.'<br>';
}
array_search('ok',$arr);判断一个对象在一个数组中是否存在,存在了返回位置,不 存在返回假
$arr=array('ok',100);
$i=array_search('ok',$arr);
if($i===false){
echo '不存在';
}else{
echo '存在,位置是:'.$i;
}
从一个数组中查找一个数字,如果找到则输出数字的下标,如果找不到则输出查无此数,比array_search(60,$arr)功能强大
$arr=[10,60,20,60,50,60,60];
function search($arr,$findv){
$flag=false;
for($i=0;$i<count($arr);$i++){
if($findv==$arr[$i]){
echo "找到了,下标为$i";
$flag=true;
}
}
if(!$flag){
echo '查询不到';
}
}
search($arr,60);
二分查找所谓二分查找,前提,数组已经是一个有序数组,如果不是有序的必须先排序再查找
$arr=[10,20,30,50];
function bs($arr,$findv,$leftk,$rightk){
if($rightk<$leftk){
echo '找不到该数';
return;
}
//找到中间这个数
$middk=round(($rightk+$leftk)/2);
//如果大于则向后面找
if($findv>$arr[$middk]){
bs($arr,$findv,$middk+1,$rightk);
}elseif($findv<$arr[$middk]){
bs($arr,$findv,$leftk,$middk-1);
}else{
echo "找到这个数 下标为$middk";
}
}
bs($arr,50,0,count($arr)-1);
count() sizeof() 统计一个数组中有多少元素
$arr=array('ok',100);
echo sizeof($arr),count($arr);
echo sizeof($arr).count($arr);
count($b[1]) 二维数组统计个数
echo count($b[1]);//二维数组统计元素个数
$a=[10,50,1,2,5,80,40,58,33,[1,2,3]];
$c=count($a[9]);
echo $c;
implode(' ',$a);将数组以空格的情形进行合并
$a=[5,10,80,90,3,50,40];
rsort($a);
echo '<br>'. implode(' ',$a);//将数组以空格的情形进行合并
explode()按照一定的符号分割成数组
$arr3=explode(',','abc,bbb,333,666');
echo '<pre>';
print_r($arr3);
array_diff($a,$b) a-b 两个相减
$a=[10,20,30,50];
$b=[10,20,50,60];
$c=array_diff($a,$b);
echo '<pre>';
print_r($a);
print_r($b);
print_r($c);//a-b
array_unique($a)消除移除数组中重复值返回新数组
$a=[10,20,30,21,10,5,10];
$b=array_unique($a);//消除移除数组中重复值返回新数组
echo '<pre>';
print_r($a);
print_r($b);
array_chunk($a,3)3个为一组,把一个数组分割成1个二维数组
$a=[10,20,30,21,10,5,10];
$c=array_chunk($a,3);//3个为一组,把一个数组分割成1个二维数组
print_r($c);
shuffle()随机打乱数组元素的顺序,k值重新分配
echo '<pre>';
$a=[10,'aa'=>20,30,21,10,5,10];
print_r($a);
shuffle($a); //随机打乱数组元素的顺序,k值重新分配
print_r($a);
&表示引用变量参数 y引用x y和x是一个变量,谁改值都会影响另外一个
$x = 20;
$y = &$x;
$y = 1000;
$x = 8;
echo $y;
$Z = 20;
$y = &$Z;
echo $y;
array_key_exists(1,$b)检查key 有没有 ,如果有返回true
$b=[10,20,30,21,10,5,10];
if(array_key_exists(1,$b)){
echo '存在';
}else{
echo '不存在';
}
array_keys($b)返回key作为值显示
$b=[10,20,30,21,10,5,10];
$k=array_keys($b);
print_r($k);
array_rand($a,3)随机取出一个或多个单元,返回key
$a=[10,'aa'=>20,30,21,10,5,10];
$c = array_rand($a,3);
print_r($c);
array_flip ($b) 值和键的位置互换
$b=[10,20,30,21,10,5,10];
$y=array_flip ($b);
print_r($y);
array_rand($a,2) 随机取出 2个下标
echo '<pre>';
$a=[10,'aa'=>20,30,21,10,5,10];
$f=array_rand($a,2);
var_dump($f);
array_sum($b)统计数组中所有元素为数字的和,字符串排除在外
$b=[10,20,30,21,10,5,10,'aa'];
echo array_sum($b);//统计数组中所有元素为数字的和,字符串排除在外
array_unshift($n,123 )在$n数组的头部添加元素123
$n=[100,'aa',8000];
array_unshift($n,123 );//在数组的头部添加元素
print_r($n);
array_shift($n)将数组中的第一个元素移除并返回,并把移除的值赋给$first;
$n=[100,'aa',8000];
$first=array_shift($n); //将数组中的第一个元素移除并返回,赋值给$first;
print_r($n);
$n=[100,'aa',8000];
$first=array_shift($n); //将数组中的第一个元素移除并返回,赋值给$first;
reset($n)将数组元素指针指向第一个元素并返回值,输出第一个元素 不修改数组
$n=[500,'aa',8000];
echo reset($n);
end($n)将数组元素指针指向最后一个元素并返回值,输出最后一个值不修改数组
$n=[500,'aa',8000];
echo end($n);
array_pop($n)将数组中的最后一个元素移除并返回
$n=[500,'aa',8000];
echo array_pop($n); //将数组中的最后一个元素移除并返回,赋值给$first;
print_r($n);
array_push($n,'a','b')给数组的最后添加元素
$n=[500,'aa',8000];
array_push($n,'a','b');//给数组的最后添加元素
print_r($n);
array_reverse($n)将输出值得前后位置颠倒
$n=[500,'aa',8000];
$aa=array_reverse($n);
print_r($aa) ; //前后位置颠倒
unset($n[1],$n[0])删除数组中的元素
$n=[500,'aa',8000];
unset($n[1],$n[0]);//删除数组中的元素
print_r($n);
文件的引入用
只能引入本地的文件
require 两者几乎是一样的,唯一不同是处理引入文件失败时,require出现编译性错误,导致程序停止,include可以开发软件用
require_once
只能引入一次,可以检查该文件是否被包含,如果被包含则不再引入,效率比较低
include
include_once
die() 语句停止=exit()
die('b ');
exit('by');//本程序执行到此结束最后输出一个字符串;
return;//本程序执行到此结束=exit(); exit;
echo 'abc';
内置函数max() 求最大值
echo max(100,20,1,2,5,900,500000);最大值
get_defined-functions()查询内置的所有函数
echo '<pre>';
$f= get_defined_functions();
//内置函数,自定义函数
print_r($f);
声明函数,函数名ff本函数有三个形参其中$c有默认值,如果没有$c 则为10,本函数返回一个数组,有默认值的函数尽量放右边
function ff($a,$b,$c=10){
return [$a,$b,$c];
}
$arr=ff(20,50,'ok');
echo '<pre>';
print_r($arr);
show_source('t.php') 显示彩色源代码 highlight_file('t.php')
show_source('t.php');//打印出某个文件的源代码
highlight_file('t.php');
md5('aaaaaa'); 32位加密系统 sha1('fffffffffffff'); 40位加密系统
$p=md5('ffffff');
echo $p;
$f=sha1('aaaaa');
echo '<pre>';
echo $f;
uniqid() 唯一id uniqid('aa')唯一id加上前缀
$p=uniqid();
$e=uniqid('dgg');
echo $p.'<br>'.$e;
mt_rand() 随机整数,新函数推荐使用 rand() 旧函数不推荐使用
$c=rand(); //随机整数旧函数
$b=mt_rand();//随机整数,新函数推荐使用
echo $c;
echo '<hr>';
echo $b;
递归,函数里面再调用函数定义递归函数,函数在某种条件下,再次调用本函数,防止死循环调用 面试题
用递归写出0-10
$i=0;
function aa(){
global $i;
echo $i++.'<br>';
if($i>10){
return;
}else{
aa();
}
}
aa();
strlen($n) 返回字节数 utf8 1个汉字为3个字节 gbk 1个汉字为2个字节
$n='zs张三';
echo strlen($n); //8
mb_strlen($n) 有几个字=iconv_strlen($n,'utf-8')
$n='zs张三';
echo mb_strlen($n); //4
echo 'ok1','ok2';
echo 'aa'.'ab';
mb_internal_encoding('utf-8');
设定字符集
{}可以输出值
$age=20;
$s="他的年龄是:{$age}year";
echo $s; //输出
打印输出二维数组
$arr=array(array(0,0,0,0,0,0,8,1000),array(0,1,2,3,4,5),array(10,20,30,40,5,6,1));
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr[$i]);$j++){
echo $arr[$i][$j].' ';
}
echo '<br>';
}
打印各种图形
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>打印各种形状</title>
<meta name="keywords" content="关键字">
<meta name="description" content="简介">
<link rel="stylesheet" type="text/css" href="index.css">
<script src=""></script>
</head>
<body>
<form action="ll.php" method="post">
请输入层数:<input type="text" name="layer"><br>
请选择形状:
<select name="shape">
<option value="a">矩形</option>
<option value="b">半金字塔</option>
<option value="c">金字塔</option>
</select><br>
<input type="submit" value="打印">
</form>
<?php
//webrx 编写PHP代码
?>
</body>
</html>
<?php
//$n 表示层数
$n=$_POST['layer'];
// a表示矩形,b表示一半的金字塔,c表示完整的金字塔
$shape=$_POST['shape'];
$starnum=5;
function prints($n,$shape,$starnum=5){
switch($shape){
case "a":
for($i=1;$i<$n;$i++){
for($j=1;$j<=$starnum;$j++){
echo '*';
}
echo '<br>';
}
break;
case "b":
for($i=0;$i<$n;$i++){
for($j=1;$j<$i;$j++){
echo "*";
}
echo '<br>';
}
break;
case "c":
break;
}
}
prints($n,$shape);
99乘法表
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo "$j*$i";
echo ' ';
}
echo '<br>';
}
找出一个数组里面最小的值
$arr=array(10,2,5,3,1);
function findmin(&$arr){
//假设第一个人就是给出最低分的裁判
$minf=$arr[0];
$mink=0;
for($i=1;$i<count($arr);$i++){
if($minf>$arr[$i]){
$minf=$arr[$i];
$mink=$i;
}
}
return $mink;
}
$mink=findmin($arr);
echo '下标为'.$mink.'给的分最低是'.$arr[$mink];
找出一个数组里面最大的值方法一
function findmax(&$arr){
//假设第一个人就是给出最低分的裁判
$maxf=$arr[0];
$maxk=0;
for($i=1;$i<count($arr);$i++){
if($maxf<$arr[$i]){
$maxf=$arr[$i];
$maxk=$i;
}
}
return $maxk;
}
$maxk=findmax($arr);
echo '下标为'.$maxk.'给的分最高是'.$arr[$maxk];
求数组最大值方法二:
假设第一个值为最大值,取出数组里面的值,如果$max比他值小,就让最大值等于数组里面的值
function mmax(){
$args=func_get_args();
$max=array_shift($args);
foreach($args as $v){
if($max<$v){
$max=$v;
}
}
return $max;
}
echo mmax(40,10,20,90); //90
单双引号的使用
$age =18;
$s1='hello=$age';
$s2="hello-$age";
echo $s2,$s1;
输出单引号
echo $s3="'hello'";
echo $s4='\'hello\''; 'hello'
$s=<<<aa
kdlaja<br>
dsaljdkl<br>
dslf<br>
aa;
echo $s;
$n='china李四';
echo $n{1};
输出结果h
$n='china李四';
echo $n{8},$n{9},$n{10};
加上{}可以让字符串连续输出
$age=20;
$s="他的年龄是:{$age}year";
echo $s;
function aa(){
echo '<br>';
echo 'ok1'.'ok2'.'ok3';
}
function bb(){
echo '<br>';
echo 'aa','aa','oa';
}
$start=time();
for($i=0;$i<=300000;$i++){
bb();
}
$end=time();
echo $end-$start;
. 3 , 2;
strtolower('AA') 小写 strtoupper('bb')大写
echo strtolower('AA'),strtoupper('bb');
aa,BB
trim()清除空格 rtrim()清除右空格 去除文件名 ltrim() 清除左空格去除文件格式名
$str=" hello lisi ";
echo trim($str),rtrim($str),ltrim($str);
$n='aa.jpg';
echo rtrim($n,'.jpg'); //aa
nl2br($s)换行转br 将字符串中\r\n换行符,直接换成<br/>
$s=<<<EOT
aaa
dd
ff
EOT;
echo nl2br($s);
htmlspecialchars('<font>hello</font>')
直接把HTML文件输出,适合客户留言添加文章
echo htmlspecialchars('<font>hello</font>');
递归函数为重复调用自己比如
function aa(){
aa();
}
aa();
递归输出1-10
$i=0;
function aa(){
global $i;//定义全局变量
echo $i++.'<br>';
if($i>10){
return;
}else{
aa();
}
}
aa();
;控制最多显示多少条 php.ini 文件中添加 重启apache服务器
xdebug.max_nesting_level=600
删除目录的函数要使用递归
&可以定义全局变量和global的作用一样,可以引用变量
function aa(&$i){
$i='aa';
}
$i='yy';
aa($i);
echo $i; //aa;
get_defined_functions()查询所有的内置函数
$f=get_defined_functions();
echo '<pre>';
print_r($f);
list($x,$y,$z)快速将数组的前三位分别赋值给$x,$y,$z
$a=[150,100,'aa',20];
list($x,$y,$z)=$a;
var_dump($x);
var_dump($y);
var_dump($z);
format 字符 | 说明 | 返回值例子 |
---|---|---|
日 | --- | --- |
d | 月份中的第几天,有前导零的 2 位数字 | 01 到 31 |
D | 星期中的第几天,文本表示,3 个字母 | Mon 到 Sun |
j | 月份中的第几天,没有前导零 | 1 到 31 |
l("L"的小写字母) | 星期几,完整的文本格式 | Sunday 到 Saturday |
N | ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) | 1(表示星期一)到 7(表示星期天) |
S | 每月天数后面的英文后缀,2 个字符 | st,nd,rd 或者 th。可以和 j 一起用 |
w | 星期中的第几天,数字表示 | 0(表示星期天)到 6(表示星期六) |
z | 年份中的第几天 | 0 到 365 |
星期 | --- | --- |
W | ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) | 例如:42(当年的第 42 周) |
月 | --- | --- |
F | 月份,完整的文本格式,例如 January 或者 March | January 到 December |
m | 数字表示的月份,有前导零 | 01 到 12 |
M | 三个字母缩写表示的月份 | Jan 到 Dec |
n | 数字表示的月份,没有前导零 | 1 到 12 |
t | 给定月份所应有的天数 | 28 到 31 |
年 | --- | --- |
L | 是否为闰年 | 如果是闰年为 1,否则为 0 |
o | ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) | Examples: 1999 or 2003 |
Y | 4 位数字完整表示的年份 | 例如:1999 或 2003 |
y | 2 位数字表示的年份 | 例如:99 或 03 |
时间 | --- | --- |
a | 小写的上午和下午值 | am 或 pm |
A | 大写的上午和下午值 | AM 或 PM |
B | Swatch Internet 标准时 | 000 到 999 |
g | 小时,12 小时格式,没有前导零 | 1 到 12 |
G | 小时,24 小时格式,没有前导零 | 0 到 23 |
h | 小时,12 小时格式,有前导零 | 01 到 12 |
H | 小时,24 小时格式,有前导零 | 00 到 23 |
i | 有前导零的分钟数 | 00 到 59> |
s | 秒数,有前导零 | 00 到 59> |
u | 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer参数, 而 DateTime::format() 才支持毫秒。 | 示例: 654321 |
时区 | --- | --- |
e | 时区标识(PHP 5.1.0 新加) | 例如:UTC,GMT,Atlantic/Azores |
I | 是否为夏令时 | 如果是夏令时为 1,否则为 0 |
O | 与格林威治时间相差的小时数 | 例如:+0200 |
P | 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) | 例如:+02:00 |
T | 本机所在的时区 | 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。 |
Z | 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 | -43200 到 43200 |
完整的日期/时间 | --- | --- |
c | ISO 8601 格式的日期(PHP 5 新加) | 2004-02-12T15:19:21+00:00 |
r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 |
U | 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 参见 time() |
$w=date('w');
if($w==0){
echo '星期日';
}else if($w=1){
echo '星期一';
} //输出结果星期一
goto语句为直接跳转语句