【风马一族_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 ...
随机推荐
- fcc筆記
在 JavaScript 中所有的变量都是大小写敏感的JavaScript提供七种不同的data types(数据类型),它们是undefined(未定义), null(空), boolean(布尔型 ...
- [JZOJ5969] 世界线修理(欧拉回路)
题目 描述 > 题目大意 给你两棵树,让你对每个点赋权,使得在两棵树中的任意子树的和绝对值为111. 比赛思路 其实我一开始理解错题意了-- 正解 首先,我们可以判断每个点权的奇偶性. 如果一个 ...
- webpack4.0打包的时候一些技巧
4.0的webpack要比之前的版本强大的不是一点点 打包的时候也做了很多优化 然后说一些这段时间发现的有趣的技巧 1. 打包出来的文件很大,不知道是什么原因可以用 webpack-bundle-an ...
- 【arc075f】AtCoder Regular Contest 075 F - Mirrored
题意 给定一个数x,问有多少个正整数y,使得rev(y)-y==x 其中rev(x)表示x按位翻转之后得到的数. x<=1e9 做法 首先通过打表发现,这个答案不会很大. 这就说明解相当地松弛. ...
- 44个 Javascript 变态题解析 (上)
原题来自: javascript-puzzlers(http://javascript-puzzlers.herokuapp.com/) 读者可以先去做一下感受感受. 当初笔者的成绩是 21/44… ...
- PAT甲级——A1039 Course List for Student
Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists o ...
- JVM学习-之对象的创建和内存分配
最近看JVM内存模型,看了很多文章,大都讲到JVM将内存区域划分分:Mehtod-Area(No heap) 方法区,Heap(堆)区,Program Counter Register(程序计数器), ...
- 解决pip安装过慢的问题
1.pip install scipy -i https://pypi.douban.com/simple/ 2.pip install --index https://pypi.mirrors.us ...
- 关于Python3 打印中文乱码问题
解决方案有两种: 在命令行前指定编码 $ PYTHONIOENCODING=utf-8 python test.py hello world 你好,世界 在代码中指定编码 import io impo ...
- 【转载】TSN简介及相关资源
原文:https://blog.csdn.net/u012692537/article/details/86188392 一.简介 1.1 什么是TSN TSN(Time Sensitive Netw ...