PHP笔记之数组

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


数组

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

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

数组的自动增长下标默认是从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."
"; echo $c."
"; list($name,$pro) = explode("_",$str); echo $name."
"; echo $pro."
";
each()函数

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

$arr = array("one"=>"wp","wo","we");
    echo '
';
    $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 '
'; //返回结果 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}
"; }

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

   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.'
'; // print_r($GLOBALS).'
'; foreach ($GLOBALS as $son => $fuck) { echo $son.$fuck.'
'; } } demo();

你可能感兴趣的:(PHP笔记之数组)