PHP笔记之数组

PHP的数组功能很强大,有很多和OC或者其他语言不一样的地方,譬如说其数组元素不限制类型,这种类似于swift的元组。以下是其相关特性:
1.数组中的元素 由键和值构成,key/value
2.两种下标类型:①整数(索引数组) ②字符串
3.[ ]来操作下标,也可以用{}进行互换,建议使用[ ]来指定下标
4.如果是关联数组,一定要带引号,不要使用常量名称,处理速度较之慢8倍


数组

数组声明时,如果[ ]中没有下标,往数组中添加元素是按自动增长的下标顺序来赋值

$arr = array();
for($i = 0;$i<2;$i++){
    array[ ] = $i * $i;
}
echo'<pre>';//数组的最原始形态语句
print_r($arr); //array[0] = 0 ;[array[1] = 1;
echo'</pre>;

数组的自动增长下标默认是从0开始,自动增长的出现过的最大值加1;
关联数组的字符串下标,不会影响索引下标的排列规则;
负数也可以做下标;

$arr[ ] = 10;//下标0
$arr[ ] = 10;//下标1
$arr[8] = 10;//下标8
$arr[ ] = 10;//下标9
$arr[9] = 10;//下标9覆盖上一个
$arr[4] = 10;//下标4
$arr[ ] = 18;//下标10
$arr['one'] = 66;
$arr[ ] = 99;//下标11
$arr[-100] = 11;//下标-100
$arr[ ]  = 20;//下标12

数组的声明

方式1:

$arr =  array("aaa","two"=>"bbb",9=>"ccc","ddd");

方式2:php5.4以后 短数组定义语法

$arr = ["aaa","bbb",333,9=>444,555];

删除数组中的一个元素使用unset(),下标不会重新索引,需要使用array_values()函数重新索引

$arr = ["one","two","three","four"];
unset($arr[2]);//Array ( [0] => one [1] => two [3] => four )
$arr = array_values($arr);
print_r(arr);
//Array ( [0] => one [1] => two [2] => four )

多维数组可以调用方式和OC类似,不过多了一个关联下标的形式

$arr[1]["one"];

数组的遍历

for循环

效率最高,但数组下标比一定连续,关联数组无法遍历出值

$arr = array("wp","wo","we","ew");
 $num = count($arr);
 for($i=0; $i < $num; $i++) { 
    echo $arr[i];
 }

foreach

有多少元素,循环多少次

foreach ($variable as $key => $value) {
    可以把键值都返回
 }

联合使用List(),each()和while循环

List()函数

将数组中的元素转为变量使用
①等号左边使用List()函数,等号右边只能是一个数组。
②数组中有几个元素,在list()中就用几个参数,而且参数必须是变量(新声明的自定义变量),不能是值

③只能将索引数组(下标是连续的),转为变量,是从0开始

④可以在list()参数中通过,空项选择性的接收数组中的元素

list($a, ,$c) = array("123","sp","we");
echo $a."<br>";
echo $c."<br>"; 

list($name,$pro) = explode("_",$str);
echo $name."<br>";
echo $pro."<br>";
each()函数

只是一个函数,参数就是一个数组,返回值也是一个数组
①返回的值是一个数组,数组固定有4个元素,且下标也是固定的(1(值)Value(值)0(下标)key(下标))
②each()只处理当前的元素(默认当前元素为第一个元素,指针指向第一个)转为数组信息后,处理完后,指针指向下一个元素
③如果指定已经在结束位置了,如果再使用each()获取元素,返回false

$arr = array("one"=>"wp","wo","we");
    echo '<pre>';
    $one = each($arr); 

    print_r($one);
    $one = each($arr);

    print_r($one);
    $one = each($arr);

    print_r($one);
    $one = each($arr);

    var_dump($one);
    echo '</pre>';
//返回结果
Array ( [1] => wp [value] => wp [0] => one [key] => one ) 
Array ( [1] => wo [value] => wo [0] => 0 [key] => 0 ) 
Array ( [1] => we [value] => we [0] => 1 [key] => 1 ) 
bool(false) 
List()、each()、while联合使用
$arr = ["one"=>"妹纸","wp","we","ee"];
while (list($key,$value) = each($arr)) {
        echo "{$key} => {$value}<br>";
    }

使用数组的内部指针控制函数遍历数组

   next($arr);//下一个
    end($arr);//最后一个
    prev($arr);//前一个
    reset($arr);//重置
    key($arr);//获取当前下标
    current($arr);//获取当前值
超全局数组

超全局数组,系统已经声明完的变量,可以直接使用。每个预定义数组都有自己独特的功能。
常用的超全局数组

$_SERVER 服务器变量,可以获取服务器所有的信息
$_ENV 环境变量
$_GET 接收用户通过URL向服务器传的参数
$_POST 接收用户通过HTTP协议向服务器传的参数 
$GLOBALS
$_REQUEST 有安全风险,一般不用
$_FILES 上传文件信息
$_COOKIE     
 $_SESSION 
 $GLOBALS  = array("123","wp");
    function demo(){
        // echo $GLOBALS.'<br>';
        // print_r($GLOBALS).'<br>';
        foreach ($GLOBALS as $son => $fuck) {
            echo $son.$fuck.'<br>';
        }
    }
    demo();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • array_change_key_case — 返回字符串键名全为小写或大写的数组 array_chunk — 将...
    人在码途阅读 331评论 0 0
  • 第三章 数组 数组是一个可以存储一组或一系列数值的变量 一个包含其他数组的数组称为多维数组。 关联数组允许使用更...
    梁烨端木阅读 708评论 0 0
  • 大家不要吐槽我写的乱,其实是简书的markdown编辑器有问题,看内容感觉写的很乱。我联系过简书的技术人员,连我理...
    Airmole阅读 969评论 0 4
  • 数组的概述 PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方...
    dptms阅读 1,629评论 0 4
  • 青子矜, 眉已皱, 缠绵退三分千字诀无释消愁。 悠我心, 醉相流, 对酌南山下道总是下个春秋。 夜莺啼, 薄暮丑,...
    墨子龙阅读 267评论 1 6