php与数组相关的各类函数的使用

Posted on 2015-05-15 00:39  小蕊同学  阅读(366)  评论(0编辑  收藏  举报
定义二维数组
  1. $a[][]=20;//二维数组
  2. $c=array(20,30,[10,80]);
  3. echo '<pre>';
  4. print_r($c);


sort()升序  rsort()降序
  1. $a=[10,50,1,2,5,80,40,58,33,22];
  2. echo '<pre>';
  3. print_r($a);
  4. sort($a);
  5. echo '<pre>';
  6. print_r($a);

asort()升序保留索引位置   asort()降序保留索引位置
  1. $a=[10,50,1,2,5,80,40,58,33,22];
  2. echo '<pre>';
  3. print_r($a);
  4. asort($a);
  5. echo '<pre>';
  6. print_r($a);

ksort();按照键名排序
  1. $n['hn']=['郑州','上海','北京','广州','洛阳'];
  2. $n['bj']=['aa','bb','cc','dd'];
  3. ksort($n);
  4. print_r($n);

array_values()取出数组值索引全部重新分配,建立索引数组
  1. $a=['aa'=>20,5,6,'zz'=>'郑州'];
  2. $b=array_values($a);//取出数组值索引全部重新分配,建立索引数组
  3. echo '<pre>';
  4. print_r($a);
  5. print_r($b);

array_merge($a,$b)将多个数组合并成一个数组k值相同将保留最后一个值
  1. $a=[5,10,80,90,3,50,40];
  2. sort($a); //升序
  3. $b=array('aa'=>'你好',10000);
  4. $c=array_merge($a,$b);//k值相同将保留最后一个值
  5. //将多个数组合并成一个数组
  6. echo '<pre>';
  7. print_r($c);

var_dump($a); 打印出数组的类型和值
  1. $a[][]=20;
  2. var_dump($a);

$_SERVER['SERVER_SOFTWARE'] 显示服务器,php信息,及主机系统信息
echo $_SERVER['SERVER_SOFTWARE'];

foreach  遍历输出 
  1. $arr=array('ok',100);
  2. foreach($arr as $k=>$v){
  3. echo $k.'='.$v.'<br>';
  4. }

array_search('ok',$arr);判断一个对象在一个数组中是否存在,存在了返回位置,不 存在返回假
  1. $arr=array('ok',100);
  2. $i=array_search('ok',$arr);
  3. if($i===false){
  4. echo '不存在';
  5. }else{
  6. echo '存在,位置是:'.$i;
  7. }

从一个数组中查找一个数字,如果找到则输出数字的下标,如果找不到则输出查无此数,比array_search(60,$arr)功能强大
  1. $arr=[10,60,20,60,50,60,60];
  2. function search($arr,$findv){
  3. $flag=false;
  4. for($i=0;$i<count($arr);$i++){
  5. if($findv==$arr[$i]){
  6. echo "找到了,下标为$i";
  7. $flag=true;
  8. }
  9. }
  10. if(!$flag){
  11. echo '查询不到';
  12. }
  13. }
  14. search($arr,60);

二分查找所谓二分查找,前提,数组已经是一个有序数组,如果不是有序的必须先排序再查找
  1. $arr=[10,20,30,50];
  2. function bs($arr,$findv,$leftk,$rightk){
  3. if($rightk<$leftk){
  4. echo '找不到该数';
  5. return;
  6. }
  7. //找到中间这个数
  8. $middk=round(($rightk+$leftk)/2);
  9. //如果大于则向后面找
  10. if($findv>$arr[$middk]){
  11. bs($arr,$findv,$middk+1,$rightk);
  12. }elseif($findv<$arr[$middk]){
  13. bs($arr,$findv,$leftk,$middk-1);
  14. }else{
  15. echo "找到这个数 下标为$middk";
  16. }
  17. }
  18. bs($arr,50,0,count($arr)-1);


count() sizeof()  统计一个数组中有多少元素
  1. $arr=array('ok',100);
  2. echo sizeof($arr),count($arr);
  3. echo sizeof($arr).count($arr);

count($b[1])  二维数组统计个数
  1. echo count($b[1]);//二维数组统计元素个数
  1. $a=[10,50,1,2,5,80,40,58,33,[1,2,3]];
  2. $c=count($a[9]);
  3. echo $c;

implode(' ',$a);将数组以空格的情形进行合并
  1. $a=[5,10,80,90,3,50,40];
  2. rsort($a);
  3. echo '<br>'. implode(' ',$a);//将数组以空格的情形进行合并

explode()按照一定的符号分割成数组
  1. $arr3=explode(',','abc,bbb,333,666');
  2. echo '<pre>';
  3. print_r($arr3);

array_diff($a,$b)     a-b 两个相减
  1. $a=[10,20,30,50];
  2. $b=[10,20,50,60];
  3. $c=array_diff($a,$b);
  4. echo '<pre>';
  5. print_r($a);
  6. print_r($b);
  7. print_r($c);//a-b

array_unique($a)消除移除数组中重复值返回新数组
  1. $a=[10,20,30,21,10,5,10];
  2. $b=array_unique($a);//消除移除数组中重复值返回新数组
  3. echo '<pre>';
  4. print_r($a);
  5. print_r($b);

array_chunk($a,3)3个为一组,把一个数组分割成1个二维数组
  1. $a=[10,20,30,21,10,5,10];
  2. $c=array_chunk($a,3);//3个为一组,把一个数组分割成1个二维数组
  3. print_r($c);

shuffle()随机打乱数组元素的顺序,k值重新分配
  1. echo '<pre>';
  2. $a=[10,'aa'=>20,30,21,10,5,10];
  3. print_r($a);
  4. shuffle($a); //随机打乱数组元素的顺序,k值重新分配
  5. print_r($a);

&表示引用变量参数 y引用x  y和x是一个变量,谁改值都会影响另外一个
  1. $x = 20;
  2. $y = &$x;
  3. $y = 1000;
  4. $x = 8;
  5. echo $y;

  6. $Z = 20;
  7. $y = &$Z;
  8. echo $y;

array_key_exists(1,$b)检查key  有没有 ,如果有返回true
  1. $b=[10,20,30,21,10,5,10];
  2. if(array_key_exists(1,$b)){
  3. echo '存在';
  4. }else{
  5. echo '不存在';
  6. }
array_keys($b)返回key作为值显示
  1. $b=[10,20,30,21,10,5,10];
  2. $k=array_keys($b);
  3. print_r($k);

array_rand($a,3)随机取出一个或多个单元,返回key
  1. $a=[10,'aa'=>20,30,21,10,5,10];
  2. $c = array_rand($a,3);
  3. print_r($c);

array_flip ($b) 值和键的位置互换
  1. $b=[10,20,30,21,10,5,10];
  2. $y=array_flip ($b);
  3. print_r($y);

array_rand($a,2) 随机取出 2个下标
  1. echo '<pre>';
  2. $a=[10,'aa'=>20,30,21,10,5,10];
  3. $f=array_rand($a,2);
  4. var_dump($f);

array_sum($b)统计数组中所有元素为数字的和,字符串排除在外
  1. $b=[10,20,30,21,10,5,10,'aa'];
  2. echo array_sum($b);//统计数组中所有元素为数字的和,字符串排除在外

array_unshift($n,123 )在$n数组的头部添加元素123
  1. $n=[100,'aa',8000];
  2. array_unshift($n,123 );//在数组的头部添加元素
  3. print_r($n);

array_shift($n)将数组中的第一个元素移除并返回,并把移除的值赋给$first;
  1. $n=[100,'aa',8000];
  2. $first=array_shift($n); //将数组中的第一个元素移除并返回,赋值给$first;
  3. print_r($n);

  1. $n=[100,'aa',8000];
  2. $first=array_shift($n); //将数组中的第一个元素移除并返回,赋值给$first;

 reset($n)将数组元素指针指向第一个元素并返回值,输出第一个元素 不修改数组
  1. $n=[500,'aa',8000];
  2. echo reset($n);


end($n)将数组元素指针指向最后一个元素并返回值,输出最后一个值不修改数组
  1. $n=[500,'aa',8000];
  2. echo end($n);

array_pop($n)将数组中的最后一个元素移除并返回
  1. $n=[500,'aa',8000];
  2. echo array_pop($n); //将数组中的最后一个元素移除并返回,赋值给$first;
  3. print_r($n);

array_push($n,'a','b')给数组的最后添加元素
  1. $n=[500,'aa',8000];
  2. array_push($n,'a','b');//给数组的最后添加元素
  3. print_r($n);

array_reverse($n)将输出值得前后位置颠倒
  1. $n=[500,'aa',8000];
  2. $aa=array_reverse($n);
  3. print_r($aa) ; //前后位置颠倒

unset($n[1],$n[0])删除数组中的元素
  1. $n=[500,'aa',8000];
  2. unset($n[1],$n[0]);//删除数组中的元素
  3. print_r($n);

文件的引入用
只能引入本地的文件
require   两者几乎是一样的,唯一不同是处理引入文件失败时,require出现编译性错误,导致程序停止,include可以开发软件用
require_once
只能引入一次,可以检查该文件是否被包含,如果被包含则不再引入,效率比较低
include
include_once
die() 语句停止=exit()
die('b ');
exit('by');//本程序执行到此结束最后输出一个字符串;
return;//本程序执行到此结束=exit(); exit;
echo 'abc';
内置函数max() 求最大值
  1. echo max(100,20,1,2,5,900,500000);最大值
get_defined-functions()查询内置的所有函数 
  1. echo '<pre>';
  2. $f= get_defined_functions();
  3. //内置函数,自定义函数
  4. print_r($f);
声明函数,函数名ff本函数有三个形参其中$c有默认值,如果没有$c 则为10,本函数返回一个数组,有默认值的函数尽量放右边
  1. function ff($a,$b,$c=10){
  2. return [$a,$b,$c];
  3. }
  4. $arr=ff(20,50,'ok');
  5. echo '<pre>';
  6. print_r($arr);

show_source('t.php')  显示彩色源代码    highlight_file('t.php')
  1. show_source('t.php');//打印出某个文件的源代码
  1. highlight_file('t.php');
md5('aaaaaa');   32位加密系统  sha1('fffffffffffff');  40位加密系统
  1. $p=md5('ffffff');
  2. echo $p;
  3. $f=sha1('aaaaa');
  4. echo '<pre>';
  5. echo $f;

uniqid()  唯一id  uniqid('aa')唯一id加上前缀
  1. $p=uniqid();
  2. $e=uniqid('dgg');
  3. echo $p.'<br>'.$e;

mt_rand()  随机整数,新函数推荐使用  rand() 旧函数不推荐使用
  1. $c=rand(); //随机整数旧函数
  2. $b=mt_rand();//随机整数,新函数推荐使用
  3. echo $c;
  4. echo '<hr>';
  5. echo $b;

递归,函数里面再调用函数定义递归函数,函数在某种条件下,再次调用本函数,防止死循环调用  面试题  
用递归写出0-10
  1. $i=0;
  2. function aa(){
  3. global $i;
  4. echo $i++.'<br>';
  5. if($i>10){
  6. return;
  7. }else{
  8. aa();
  9. }
  10. }
  11. aa();

strlen($n)  返回字节数   utf8  1个汉字为3个字节  gbk  1个汉字为2个字节   
  1. $n='zs张三';
  2. echo strlen($n); //8
mb_strlen($n)   有几个字=iconv_strlen($n,'utf-8')
  1. $n='zs张三';
  2. echo mb_strlen($n); //4
  1. echo 'ok1','ok2';
  2. echo 'aa'.'ab';
mb_internal_encoding('utf-8');
设定字符集
{}可以输出值
  1. $age=20;
  2. $s="他的年龄是:{$age}year";
  3. echo $s; //输出

打印输出二维数组
  1. $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));
  2. for($i=0;$i<count($arr);$i++){
  3. for($j=0;$j<count($arr[$i]);$j++){
  4. echo $arr[$i][$j].' ';
  5. }
  6. echo '<br>';
  7. }

打印各种图形
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>打印各种形状</title>
  6. <meta name="keywords" content="关键字">
  7. <meta name="description" content="简介">
  8. <link rel="stylesheet" type="text/css" href="index.css">
  9. <script src=""></script>
  10. </head>
  11. <body>
  12. <form action="ll.php" method="post">
  13. 请输入层数:<input type="text" name="layer"><br>
  14. 请选择形状:
  15. <select name="shape">
  16. <option value="a">矩形</option>
  17. <option value="b">半金字塔</option>
  18. <option value="c">金字塔</option>
  19. </select><br>
  20. <input type="submit" value="打印">
  21. </form>
  22. <?php
  23. //webrx 编写PHP代码
  24. ?>
  25. </body>
  26. </html>
  1. <?php
  2. //$n 表示层数
  3. $n=$_POST['layer'];
  4. // a表示矩形,b表示一半的金字塔,c表示完整的金字塔
  5. $shape=$_POST['shape'];
  6. $starnum=5;
  7. function prints($n,$shape,$starnum=5){
  8. switch($shape){
  9. case "a":
  10. for($i=1;$i<$n;$i++){
  11. for($j=1;$j<=$starnum;$j++){
  12. echo '*';
  13. }
  14. echo '<br>';
  15. }
  16. break;
  17. case "b":
  18. for($i=0;$i<$n;$i++){
  19. for($j=1;$j<$i;$j++){
  20. echo "*";
  21. }
  22. echo '<br>';
  23. }
  24. break;
  25. case "c":
  26. break;
  27. }
  28. }
  29. prints($n,$shape);
99乘法表
  1. for($i=1;$i<=9;$i++){
  2. for($j=1;$j<=$i;$j++){
  3. echo "$j*$i";
  4. echo ' ';
  5. }
  6. echo '<br>';
  7. }

找出一个数组里面最小的值
  1. $arr=array(10,2,5,3,1);
  2. function findmin(&$arr){
  3. //假设第一个人就是给出最低分的裁判
  4. $minf=$arr[0];
  5. $mink=0;
  6. for($i=1;$i<count($arr);$i++){
  7. if($minf>$arr[$i]){
  8. $minf=$arr[$i];
  9. $mink=$i;
  10. }
  11. }
  12. return $mink;
  13. }
  14. $mink=findmin($arr);
  15. echo '下标为'.$mink.'给的分最低是'.$arr[$mink];
找出一个数组里面最大的值方法一
  1. function findmax(&$arr){
  2. //假设第一个人就是给出最低分的裁判
  3. $maxf=$arr[0];
  4. $maxk=0;
  5. for($i=1;$i<count($arr);$i++){
  6. if($maxf<$arr[$i]){
  7. $maxf=$arr[$i];
  8. $maxk=$i;
  9. }
  10. }
  11. return $maxk;
  12. }
  13. $maxk=findmax($arr);
  14. echo '下标为'.$maxk.'给的分最高是'.$arr[$maxk];
求数组最大值方法二:
假设第一个值为最大值,取出数组里面的值,如果$max比他值小,就让最大值等于数组里面的值
  1. function mmax(){
  2. $args=func_get_args();
  3. $max=array_shift($args);
  4. foreach($args as $v){
  5. if($max<$v){
  6. $max=$v;
  7. }
  8. }
  9. return $max;
  10. }
  11. echo mmax(40,10,20,90); //90

单双引号的使用
  1. $age =18;
  2. $s1='hello=$age';
  3. $s2="hello-$age";
  4. echo $s2,$s1;

输出单引号
  1. echo $s3="'hello'";
  2. echo $s4='\'hello\''; 'hello'

  1. $s=<<<aa
  2. kdlaja<br>
  3. dsaljdkl<br>
  4. dslf<br>
  5. aa;
  6. echo $s;


  1. $n='china李四';
  2. echo $n{1};
输出结果h
  1. $n='china李四';
  2. echo $n{8},$n{9},$n{10};

加上{}可以让字符串连续输出
  1. $age=20;
  2. $s="他的年龄是:{$age}year";
  3. echo $s;

  1. function aa(){
  2. echo '<br>';
  3. echo 'ok1'.'ok2'.'ok3';
  4. }
  5. function bb(){
  6. echo '<br>';
  7. echo 'aa','aa','oa';
  8. }
  9. $start=time();
  10. for($i=0;$i<=300000;$i++){
  11. bb();
  12. }
  13. $end=time();
  14. echo $end-$start;
.  3    ,  2;
strtolower('AA')  小写   strtoupper('bb')大写
  1. echo strtolower('AA'),strtoupper('bb');
 aa,BB
trim()清除空格    rtrim()清除右空格  去除文件名   ltrim() 清除左空格去除文件格式名
  1. $str=" hello lisi ";
  2. echo trim($str),rtrim($str),ltrim($str);
  1. $n='aa.jpg';
  2. echo rtrim($n,'.jpg'); //aa
 nl2br($s)换行转br 将字符串中\r\n换行符,直接换成<br/>
  1. $s=<<<EOT
  2. aaa
  3. dd
  4. ff
  5. EOT;
  6. echo nl2br($s);

htmlspecialchars('<font>hello</font>')
直接把HTML文件输出,适合客户留言添加文章
  1. echo htmlspecialchars('<font>hello</font>');

递归函数为重复调用自己比如
function aa(){
aa();
}
aa();
递归输出1-10
  1. $i=0;
  2. function aa(){
  3. global $i;//定义全局变量
  4. echo $i++.'<br>';
  5. if($i>10){
  6. return;
  7. }else{
  8. aa();
  9. }
  10. }
  11. aa();

;控制最多显示多少条  php.ini 文件中添加  重启apache服务器
xdebug.max_nesting_level=600
删除目录的函数要使用递归
&可以定义全局变量和global的作用一样,可以引用变量
  1. function aa(&$i){
  2. $i='aa';
  3. }
  4. $i='yy';
  5. aa($i);
  6. echo $i; //aa;
get_defined_functions()查询所有的内置函数
  1. $f=get_defined_functions();
  2. echo '<pre>';
  3. print_r($f);
list($x,$y,$z)快速将数组的前三位分别赋值给$x,$y,$z
  1. $a=[150,100,'aa',20];
  2. list($x,$y,$z)=$a;
  3. var_dump($x);
  4. var_dump($y);
  5. var_dump($z);
格式字串可以识别以下 format 参数的字符串
format 字符说明返回值例子
------
d月份中的第几天,有前导零的 2 位数字01 到 31
D星期中的第几天,文本表示,3 个字母Mon 到 Sun
j月份中的第几天,没有前导零1 到 31
l("L"的小写字母)星期几,完整的文本格式Sunday 到 Saturday
NISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加)1(表示星期一)到 7(表示星期天)
S每月天数后面的英文后缀,2 个字符stndrd 或者 th。可以和 j 一起用
w星期中的第几天,数字表示0(表示星期天)到 6(表示星期六)
z年份中的第几天0 到 365
星期------
WISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的)例如:42(当年的第 42 周)
------
F月份,完整的文本格式,例如 January 或者 MarchJanuary 到 December
m数字表示的月份,有前导零01 到 12
M三个字母缩写表示的月份Jan 到 Dec
n数字表示的月份,没有前导零1 到 12
t给定月份所应有的天数28 到 31
------
L是否为闰年如果是闰年为 1,否则为 0
oISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加)Examples: 1999 or 2003
Y4 位数字完整表示的年份例如:1999 或 2003
y2 位数字表示的年份例如:99 或 03
时间------
a小写的上午和下午值am 或 pm
A大写的上午和下午值AM 或 PM
BSwatch 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 新加)例如:UTCGMTAtlantic/Azores
I是否为夏令时如果是夏令时为 1,否则为 0
O与格林威治时间相差的小时数例如:+0200
P与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加)例如:+02:00
T本机所在的时区例如:ESTMDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。
Z时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。-43200 到 43200
完整的日期/时间------
cISO 8601 格式的日期(PHP 5 新加)2004-02-12T15:19:21+00:00
rRFC 822 格式的日期例如:Thu, 21 Dec 2000 16:01:07 +0200
U从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数参见 time()
  1. $w=date('w');
  2. if($w==0){
  3. echo '星期日';
  4. }else if($w=1){
  5. echo '星期一';
  6. } //输出结果星期一
goto语句为直接跳转语句









 





Copyright © 2024 小蕊同学
Powered by .NET 9.0 on Kubernetes