【风马一族_php】NO5_php基础知识_数组
原文来自:http://www.cnblogs.com/sows/p/6032570.html (博客园的)风马一族 侵犯版本,后果自负
回顾
匿名函数
定义: 变量 = function [参数列表]{};
使用:变量(参数列表);
伪类型
mixed:混合
number:数值
void: 空,没有
callback:回调函数
可变函数
通过一个变量保存一个函数的名字,然后通过调用变量,给变量增加括号,从而实现调用函数
function display() {//函数体}
$var = 'display';
$var(); //将$var的值获取,拼凑括号,然后执行对应的函数
数据类型转换
自动转换
强制转换:integer 、 float、 string、 Boolean、 array、 object
数据类型判断
以is_开始,后面跟数据类型,返回的结果都是布尔类型
is_scalar:标量判断
is_number: 数值判断(数值字符串)
文件包含
页面布局,代码重用
include,require和include_once,require_once
include和indlude_once的区别:include每次包含都会去加载一次文件,include_once只加载目标文件一次
include和requirer的区别:include可以在目标文件不存在的情况下进行包含,不会终止当前脚本的执行,require必须要求目标文件存在,否则终止当前脚本执行
脚本中断
return、die和exit
基于return ,可以实现配置文件
系统函数
字符串函数、时间函数、数学函数
数组
1.什么是数组?
解释1:数组就是一个变量中存储多个数据的特殊变量
解释2:数量就是在内存里有一块连续的内存空间(堆空间),这里面可以保存多个数据,数据没有数据类型的限制。
2.PHP数组与其他语言的数组区别:
a) PHP数组没有长度限制,其他语言C必须事先指定数组长度,如果超出长度,就称这为溢出。
b)PHP数组没有数据类型限制,其他语言C在事先必须声明数组能存储的数据类型
c)数组的下标可以是数值也可以是字符串
数组基本语法
1. 关键字 array
2. 显示数组语法
$arr = array(数值1,数值2,数值3。。。);
访问数组
数组本质是变量,访问的时候就是直接使用变量,但是因为数组元素有多个,而系统没有办法直接区分到底用户是访问的哪一个,所以需要用户在访问数组的时候,使用数组下标(键名)
语法:$数组名[下标]
数值下标:$arr[数值]
字符串下标:$arr['字符串'];
数组分类
根据数组的下标的不同进行分类
索引数组:当前数组的下标(键名)全是数字(整型)
关联数组:当前数组的下标全是字符串
混合数组:数组的下标既是数字,又是字符串
索引数组
定义方式:系统自动分配下标
<?php
header('Content-type:text/html;charset=utf-8'); echo '<pre>'; //索引数组
//系统自动分配索引序列号(下标键名)
//0 = > ,键值对形式 //显式
$arr1= array('a','b','c');
//$arr1 = array(0 =>'a',1 =>'b',2 =>'c');
var_dump($arr1); //隐式
$arr2[]='a'; //$arr2[0]='a'
$arr2[]='b'; //$arr2[1]='b'
$arr2[]='c'; //$arr2[2]='c'
var_dump($arr2);
?> 运算结果:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
php-->索引数组-自动分配下标
定义方式:手动分配下标
<?php
header('Content-type:text/html;charset=utf-8'); echo '<pre>'; //索引数组
//手动分配索引序列号(下标键名)
//0 = > ,键值对形式
//显式
$arr3= array(3=>'a',2=>'b',1=>'c');
var_dump($arr3); //隐式
$arr4[3]='a'; //$arr2[0]='a'
$arr4[5]='b'; //$arr2[1]='b'
$arr4[1]='c'; //$arr2[2]='c'
var_dump($arr4); $arr5= array('a',6=>'b','c');
var_dump($arr5);
?> 运算结果:
array(3) {
[3]=>
string(1) "a"
[2]=>
string(1) "b"
[1]=>
string(1) "c"
}
array(3) {
[3]=>
string(1) "a"
[5]=>
string(1) "b"
[1]=>
string(1) "c"
}
array(3) {
[0]=>
string(1) "a"
[6]=>
string(1) "b"
[7]=>
string(1) "c"
}
php-->索引数组-手动分配下标
系统分配索引的方式
1.系统是从0开始分配下标,依次递增1
2.用户可以手动分配下标(下标不能重复:重复的效果就是覆盖)
3.如果用户在某一处指定了下标,那么后续元素自动分配的下标从前面最大值(索引)开始
关联数组
关联数组是使用您分配给数组的指定的键的数组
<?php
header('Content-type:text/html;charset=utf-8'); echo '<pre>'; //关联数组
//显示创建
$arr1=array('a'=>'a','b'=>'b','c'=>'c');
var_dump($arr1); //隐式创建
$arr2['a']='sows';
$arr2['b']='sows';
$arr2['e']='sows';
$arr2['f']='sows';
$arr2['c']='sows';
var_dump($arr2); //访问关联数组
var_dump($arr1['a']);
?> 运算结果: array(3) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
array(5) {
["a"]=>
string(4) "sows"
["b"]=>
string(4) "sows"
["e"]=>
string(4) "sows"
["f"]=>
string(4) "sows"
["c"]=>
string(4) "sows"
}
string(1) "a"
php-关联数组
访问关联数组:
echo $arr1['1'];
条件:
1. 下标必须使用引号包含
2. 下标不允许重复,重复会覆盖
数组在内存的形式
新建数组内存关系
访问数组内存关系
数组遍历
将数组里面的所有元素都取出来
count(): 对数组长度进行计算,返回数组元素的个数(长度)
<?php
header('Content-type:text/html;charset=utf-8'); echo '<pre>'; //数组遍历
$arr = array('sows','ceo','风马一族','楼主','风林'); //索引数组:下标连续 //获得数组长度
$length = count($arr); for($i=0; $i < $length; ++$i){
//输出当前数组元素
echo $arr[$i]."\t";
}
?> 结果:
sows ceo 风马一族 楼主 风林
php--for循环遍历数组
要求:
1. 数组必须是索引数组
2. 所以必须是连续的索引
3. 索引必须从0开始
如果数组是一个关联数组,则不能使用for来循环,来实现数组遍历。因此,PHP提供一个foreach来实现对数组元素的遍历
语法:
foreach (数组名 as $key => $value){
// 使用$key当作当前元素的下标
// 使用$value当作当前元素的值
}
<?php
header('Content-type:text/html;charset=utf-8'); echo '<pre>'; //数组遍历
$arr = array('sows','ceo','风马一族','楼主','风林'); //使用foreach遍历数组
foreach($arr as $key=>$value){
echo 'key= '+$key.' value = '.$value.'<br/ >';
}
?> 结果:
0 value = sows
1 value = ceo
2 value = 风马一族
3 value = 楼主
4 value = 风林
php--foreach遍历数组
<?php
header('Content-type:text/html;charset=utf-8');
echo '<pre>'; //类型一
$arr2['a']='红艳艳';
$arr2['b']='蒿出';
$arr2['c']='sow';
$arr2['x']=234; foreach($arr2 as $key=>$Kvalue){
echo 'key= '.$key.' value= '.$Kvalue.'<br />';
} //类型二
$arr3=array("学生"=>"风马一族","学号"=>12346748,"性别"=>"男","专业"=>"英语"); foreach($arr3 as $key => $value){
echo 'key='.$key.' value='.$value.'<br/>';
}
?> 结果:
key= a value= 红艳艳
key= b value= 蒿出
key= c value= sow
key= x value= 234
key=学生 value=风马一族
key=学号 value=12346748
key=性别 value=男
key=专业 value=英语
php--foreach遍历关联数组
foreach原理
数组指针
每个数组都默认有一个指针(定位符),默认指向数组的第一个元素。如果在对数组使用循环遍历,那么该指针会在访问指针当前所指向的元素之后,将自己向下移动一位, 指向下一个元素的地址。如果当指针遍历完最后一个元素,指针会继续下移,从而移除数据空间(元素),从而再次对数组元素进行访问的时候,返回FALSE。
list使用
把数组的元素赋值变量
语法:
list{$username,$userage...}=array
php--list使用示例
因为each返回的结果里有两个索引元素0和1,所以一般使用list与each进行配对使用
php-list与each结合使用
二维数组
一个数组中包含若干数组组成。
php--二维数组使用的示例
访问二维数组
1. echo ['二维数组名']['二维数组的元素名'];
2. print_r(外数组名['内数组名']);
遍历二维数组
php--遍历二维数组
数组的增删改查
$arr = array(); //创建数组
$arr[] ='春节'; //新增元素
$arr[3] = '风马'; //修改元素
unset($arr[2]); //删除元素
php--一维数组的增删改查
php--二维数组的增删改查
数组函数
key : 返回数组中当前元素的键名
php--key得到数组的下标
current:返回数组中的当前元素
php--current得到数组元素的值
next:在返回值之前将内部指针向前移动一位,当移动出数组后,将无法使用prev()退回到数组
php--next指针指向下一位,再返回元素的值
prev:将数组的内部指针倒回一位,当移动出数组后,将无法使用next()退回到数组
php--prev指向的元素退回一位
============
场景:不知道数组的长度
php--使用若干个函数,对数组进行遍历
小结:for 、 foreash、数组相关的函数 可以遍历数组
foreash无需重置指针,其它方式需要在重新访问数组时,重置指针。
===========
end:将数组的内部指针指向最后一个单元
php--end指向数组的最后一个元素
reset:将数组的内部指针指向第一个单元
php--reset指向数组的第一个元素
array_keys :返回数组中部分的或所有的键名
php--array_keys返回数组的所有或部分键名
array_values: 返回数组中所有的值
php--array_values返回数组所有或部分元素的值
数据结构模拟函数
栈:先进后出,压栈(把数据加入到栈里),出栈(把栈里的数据弹出来)
队列:先进先出,入队(从数组尾端插入数据),出队(把数组的元素,从头部出来)
1. 以下四个函数:都是对原数组进行操作
2. 都会重置数组里面的索引
array_shift:将数组开头的单元移出数组
array_unshift:在数组开头插入一个或多个单元
array_push:将一个或多个单元压入数组的末尾(入栈)
array_pop:将数组最后一个单元弹出(出栈)
========
php--使用数组来模拟栈与队的数据结构
========
数组与字符串之间的转换
explode:使用一个字符串分割另一个字符串
此函数返回由字符串组成的数组,每个元素都是 string
的一个子串,它们被字符串 delimiter
作为边界点分割出来。
php--explode的使用示例
implode:将一个一维数组的值转化为字符串
php--implode的使用示例
CAPTCHA:验证码,制作验证码随机字符串
range:建立一个包含指定范围单元的数组
语法: range('起点',‘终点’);
php--range的使用示例
array_rand:从数组中随机取出一个或多个单元
语法:array_rand(数组,数量);
php--array_rand的使用示例
shuffle:将数组打乱
php--shuffie的使用示例
数组合并:+和array_merge()
+: 保存第一个数组的所有元素,如果后面的数组的元素与前面数组的元素的下标相同,那么就忽略。如果不同则加到第一个数组里,最终返回一个数组。
php--+号的使用示例
array_merge(): 先保留第一个数组的所有元素,如果后面数组的元素与前面数组的元素关联下标相同则用后面数组的元素覆盖前面的,如果是索引下标,直接添加到第一个数组后面,重置索引
php--array_merge()的使用示例
通过字符串来随机生成验证码
php--字符串生成随机字符
数组的比较
主要是比较数组长度,数组元素的值
符号: == 和 ===
== : 要求数组长度一致,数组元素的值相等,下标也要相等
===:数组长度一致,值和类型都完全一致,出现的顺序都必须要相同。
php-- ==和===的使用示例
排序算法
冒泡算法,快速排序,选择排序和插入排序。
原理图
排序算法的要求
1. 数组元素都必须是数值
php--冒泡算法的使用示例
【风马一族_php】NO5_php基础知识_数组的更多相关文章
- 【风马一族_php】NO2_php基础知识
原文来自:http://www.cnblogs.com/sows/p/5995763.html (博客园的)风马一族 侵犯版本,后果自负 回顾 什么是php以及php的发展史 搭建web服务器 apa ...
- 【风马一族_php】NO3_php基础知识
原文来自:http://www.cnblogs.com/sows/p/6001079.html(博客园的)风马一族 侵犯版本,后果自负 回顾 PHP基础语法 1.标签:<?php //PHP 代 ...
- 【风马一族_php】NO4_php基础知识
原文来自:http://www.cnblogs.com/sows/p/6017018.html(博客园的)风马一族 侵犯版本,后果自负 回顾 运算符:算术运算符.逻辑运算符.比较运算符.位运算符.赋值 ...
- 【风马一族_php】NO1_用php发出一声 Hi
原文来自:http://www.cnblogs.com/sows/p/5990157.html (博客园的)风马一族 侵犯版本,后果自负 第一步 安装WEB服务器 http://www.cnblog ...
- 【风马一族_php】NO0_搭建web服务器
原文来自:http://www.cnblogs.com/sows/p/5977996.html (博客园的)风马一族 侵犯版本,后果自负 安装apache apache是一种B/S结构的软件,apa ...
- 【风马一族_php】
原文来自:http://www.cnblogs.com/sows/p/6054383.html (博客园的)风马一族 侵犯版本,后果自负 2016-11-11 15:13:51 回顾 数组:分配 ...
- 【风马一族_php】数组函数
原文来自:http://www.cnblogs.com/sows/p/6045699.html (博客园的)风马一族 侵犯版本,后果自负 2016-11-09 15:56:26 数组 函数 php- ...
- 【风马一族_php】PHP与Mysql建立连接
让php发出 Hi作为基础 http://www.cnblogs.com/sows/p/5990157.html 配置apache ../apache/conf/httpd.conf 创建p ...
- 【风马一族_php】PHP运算
运算 算术运算符 <?php //加法 $num1 = 10; $num2 = 43; echo $num1 + $num2; echo " "; var_dump($num ...
随机推荐
- 嘴巴题8 BZOJ2318: Spoj4060 game with probability Problem
Time Limit: 1 Sec Memory Limit: 128 MB Submit: 555 Solved: 273 [Submit][Status][Discuss] Description ...
- [转]浅谈C#中常见的委托
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...
- 浏览器标准模式与怪异模式-CSS1Compat and BackCompat
由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同.在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为 ...
- SQL语句中GROUP BY的问题
今天查询数据库时用到集合函数sum(drp),遇到问题: 百度后,确定如下问题:当select后面查询字段有sum(drp)以外的字段时,必须使用group by函数,对数据进行排序,且查询字段中除s ...
- 深入浅出 Java Concurrency (10): 锁机制 part 5 闭锁 (CountDownLatch)[转]
此小节介绍几个与锁有关的有用工具. 闭锁(Latch) 闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态.通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻 ...
- Python技巧—list与字符串互相转换
Python技巧-list与字符串互相转换 在Python的编程中,经常会涉及到字符串与list之间的转换问题,下面就将两者之间的转换做一个梳理. 1.list转换成字符串 命令:list() 例子: ...
- JEECMS的几个细节
最近想自己写一些标签,看了一下JEECMS,感觉有些标签还是很值得学习的. 1.图片新闻:可以实现类似于flash切换图片的那种效果 效果: 代码: [@cms.ArtiList chnlId='' ...
- 转:Linux--进程间通信(信号量,共享内存)
源地址:http://www.cnblogs.com/forstudy/archive/2012/03/26/2413724.html Linux--进程间通信(信号量,共享内存)(转) 一. 信 ...
- nfsv3 vs nfsv4
https://www.quora.com/What-is-the-difference-between-NFSv3-and-NFSv4
- Java程序员面试题收集(6)
<!————————————————————————————基础题122道,代码题19道————————————————————————————> JAVA相关基础知识1.面向对象的特征有 ...