PHP数组相关知识

数组是一个能在单个变量中存储多个值的特殊变量。

$arr = array(); //表示创建一个空数组,并把创建的空数组赋值给变量$arr
$arr = ['a','b','c']; //通过[]创建数组

PHP有两种数组:索引数组和关联数组

索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,依次类推。

$arr = array(1,2.3,5,'xuxiaoke',true);
print_r($arr);

关联数组是指数组的键是字符串的数组

$arr = array(
    'username' => 'xuxiaoke',
    'age' => '16',
    'add' => '郑州'
);
print_r($arr);
//定义混合数组
$arr = array(
    'a','b','c',
    0 => 'e', //如果下标重复,后面的覆盖前面的
    'f', //如果新添加元素没有指定下标,它的下标为已有下标最大值+1(已有下标不全为负数,若全为负数则从0开始)
    'username' => 'xuxiaoke',
    5.6 => 'o', //如果下标是小数,则会自动去除小数点后的数字
    true => 'c', //true 转换为 1
    false => 'd', //false转换为 0 
    null => 'e' //下标是null则输出空字符串
);
print_r($arr);
<br>
//通过array()创建多维数组,如二维索引+索引
$arr = array(
    array('a','b','c'),
    array('e','f','g')
);
var_dump($arr);

//通过array()创建多维数组,如二维索引+关联
$arr = array(
    array(
        'username' => 'xuxiaoke',
        'sex' => 'man'
    ),
);
var_dump($arr);

//通过array()创建多维数组,如二维关联+索引
$arr = array(
    'users' => array('xuxiaoke','huangyanni'),
    'sex' => array('man','women')
);
var_dump($arr);
//二维中最重要的形式是索引+关联,因为数据库查询出的记录就是这种形式
//动态创建数组
$arr1[]=1;
$arr1[]=2;
print_r($arr1);

//手动指定下标的索引数组
$arr2[0]=1;
$arr2[1]=2;
$arr2[2]=3;
print_r($arr2);

//删除指定数组
unset($arr2[1]);
compact(mixed $varname1, mixed $$varname2, ...) //建立一个数组,包括变量名和它们的值

实例
$username = 'xuxiaoke';
$age = 26;
$email = 'xkaccz@gmail.com';
$userInfo = compact('username','age','email');
print_r($userInfo);
//通过compact创建数组时,只能写已经存在的变量的名称,不需要添加$
array range(mixed $start, mixed $end, number $step = 1) //根据范围创建数组,包含指定的元素

参数
start 序列的第一个值
end 序列结束于 end 的值
step 如果设置了步长 step,会被作为单元之间的步进值。step 应该为正值。不设置step 则默认为 1。

实例
$arr = range(1,10);
print_r($arr);

$arr = range(-15,5);
print_r($arr);

//手动指定步长的数组
$arr = range(1,10,2);
print_r($arr);
//+ 合并数组
$arr1 = array('a','b','c');
$arr2 = ['d','e','f'];
$newArr = $arr1 + $arr2;
print_r($newArr);
//注意:如果键名相同,只会使用 + 左边的数组的值

$arr1 = array('a','b','c');
$arr2 = array(
    10 => 'a',
    11 => 'b',
    12 => 'c'
);
$arr3 = array(
    'username' => 'xuxiaoke',
    'age' => '26'
);
$newArr = $arr1 + $arr2 + $arr3;
print_r($newArr);

// == 比较数组键名和键值是否相同,如果相同则返回true,不同则返回false
// === 既要比较数组键名和键值是否相同,而且顺序也要相同
$a = [
    '3' => 'a',
    '5' => true
];
$b = [
    '5' => 1,
    '3' => 'a'
];
var_dump($a==$b);
var_dump($a===$b);
遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

实例
<?php
$age=array(
    'username' => 'xuxiaoke',
    'age' => '26',
    'wechat' => 'xiaokeseo'
);
foreach($age as $key => $value)
{
    echo '键是:'.$key.',对应的值是:'.$value;
}
?>
<?php
数组指针相关函数
//key($arr):得到当前指针所在位置的键名,如果没有则返回null
//current($arr):得到当前指针所在位置的键值,如果没有则返回false
//next($arr) 将数组指针向下移动一位,并且返回当前指针所在位置的键值,如果没有则返回false
//prev($arr) 将数组指针向上移动一位,并且返回当前指针所在位置的键值,如果没有则返回false
//reset($arr) 将数组指针移动到数组开始,并且返回当前指针所在位置的键值,如果没有则返回false
//end($arr) 将数组指针移动到数组末尾,并且返回当前指针所在位置的键值,如果没有则返回false
$arr = array(
    'a','b','c',
    35 => 'test',
    'username' => 'xuxiaoke',
    'age' => '16'
);
echo '当前指针所在位置的键名为'.key($arr).'<br/>';
echo '当前指针所在位置的键值为'.current($arr).'<br/>';
echo next($arr);
echo prev($arr);
echo end($arr);
echo reset($arr);
?>