了解PHP数组

来源:互联网 发布:软件过程和软件工程 编辑:程序博客网 时间:2024/06/01 19:58

1.前言

  • 数组能够在单独的变量名中存储一个或多个值。
<?php$cars=array("Volvo","BMW","SAAB");echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";?>
  • 数组可以存入多个不同类型的数据,是一个复合数据类型。
<?php    //整型,浮点,布尔,字符串    $arr = array(1 , 1.5 , true ,'小鸡炖蘑菇');    var_dump($arr);?>

在 PHP 中,有三种数组类型:

  1. 索引数组 - 带有数字索引的数组
  2. 关联数组 - 带有指定键的数组
  3. 多维数组 - 包含一个或多个数组的数组

2.索引数组

有两种创建索引数组的方法:

  1. 索引是自动分配的(索引从 0 开始)

    <?php    //整型,浮点,布尔,字符串    $arr = array(1 , 1.5 , true ,'小鸡炖蘑菇');    var_dump($arr);?>

    运行结果:

  2. 手动分配索引(索引可以不从0开始)

    <?php$test = array(        5 => '只有不断努力才能博得未来',        10 => 'NoAlike',        'PHP学院' ,        'learn php',        19 => '赵子龙' ,        '荆轲刺秦王'    );var_dump($test);?>

    运行结果:

    注意:

    1. 索引数组若不强制声明他的下标,他的下标是从0开始的。
    2. 如果指定过下标他的下标就为指定的值。如下标为10和下标为19。
    3. 若某个值强制指定了下标(下标为10)。在它后面加上的值(PHP学院),不指定下标的话。他们的下标增长规律为最大值+1。

2.1.向索引数组中增加元素

<?php    $minren = array(            '赵云',            '魏延',            '黄忠',            '马超'        );    $minren[] = '刘玄德';    $minren[100] = '张飞';    $minren[] = '关羽';    var_dump($minren)?>

运行结果:

总结:
1. 向索引数组中增加元素用: 数组变量名[]数组变量名[键值]这两种方式来增加元素
2. 键值的增长规则与之前的规则一样。都是最大值加1的原则。

2.2.从索引数组中删除元素

<?php        $minren = array(                '赵云',                '魏延',                '黄忠',                '马超',                '关羽'            );        unset($minren[3]);//删除马超        $minren[] = '张飞';//增加张飞        var_dump($minren)?>

运行结果:

总结:
1. 使用unset删除变量的方式来删除数组里面的值。
2. 删除了中间的值,并不会让后面的下标向前自动移动。而是原来的值为多少就为多少
3. 删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。

2.3.从索引数组中修改元素

<?php        $minren = [                '赵云',                '魏延',                '黄忠',                '马超',                '关羽'            ];        $minren[2] = '黄忠怒斩夏侯渊';            var_dump($minren)?>


用变量名[键] = 新值。就把数组中的指定的值修改了。

3. 关联数组

<?php//声明关联数组$rela = array(        '帅' => '霍建华',        '很帅' => '黄晓明',        '灰常灰常帅' => '胡歌',        '有男人味的大叔' => '吴秀波',);//简洁声明$drink = [         '美' => '刘亦菲',         '很美' => '杨幂',         '非常美' => '刘诗诗',         '女神呀' => '黄蓉',         100 => '蓉儿',         '蓉妹妹',        ];var_dump($rela);var_dump($drink);?>

运行结果:

总结:
1. 声明关联数组是 键名 => 值
2. 在关联数组可以有索引数组的元素
3. 关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。

3.1 关联数组增、删、改

<?php$drink = [         '美' => '刘亦菲',         '很美' => '杨幂',         '非常美' => '刘诗诗',         '女神呀' => '黄蓉',         100 => '蓉儿',         '蓉妹妹',        ];$drink['美女'] = '我的黄蓉啊';//增加元素var_dump($drink);unset($drink['很美']);//删除元素var_dump($drink);$drink['非常美'] = '大幂幂';//修改元素var_dump($drink);?>

运行结果

4.多维数组

  1. 一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。
  2. 二维数组 数组里面插入了单层的一个数组,或者多个数组。
  3. 三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组。
  4. 超过三维的,统统都叫多维数组。

二维数组

<?php$person = array(        'office' => '办公室',        'family' => array(            '爸爸',            '妈妈',            'yeye' => '爷爷',            'nn' => '奶奶',        ),        'transport' => array(            '自行车',            '摩托车',            '汽车',            '飞机',        ),);var_dump($person);echo $person['family'][0];//访问“爸爸”echo $person['family']['yeye'];//访问“爷爷”echo $person['transport'][2];//访问“汽车”?>

三维数组

<?php$area = array(        'china' => array(            '上海',            '湖北',            '天津',            '北京' => array(                'hd' => '海淀',                '朝阳',                '房山',                'cp' => '昌平',            ),            '广东' => array(                '深圳',                '广州',                '佛山',                'dg' => '东莞',            ),        ),        'usa' => array(            '华盛顿',            '旧金山',            '纽约' => array(                    '曼哈顿区',                    '皇后区',                    '布鲁克林区',            ),        ),);var_dump($area);echo $area['usa']['0'];//读取华盛顿echo $area['usa']['纽约'][2];//读取:布鲁克林echo $area['china']['北京']['cp'];//读取:昌平$area['china']['北京']['cp'] = '西城区';//修改cp下标的值改为:西城区echo $area['china']['北京']['cp'];//输出看看原来昌平的值是否发生了变化?>


说明
在变量$area下有二个数组,一个为china,一个为usa。在china这个数组里面插入了上海、湖北、天津,又插入了北京和广东。而北京和广东又是一个数组。在北京和广东这两个数组里面分别有不同的元素。
在这usa 这个数组里面插美国的华盛顿、旧金山和纽约。而纽约下面又是一个数组,说明了纽约下面的几个区。
所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。

5.数组的操作-遍历数组

for循环遍历数组

<?php// 1.遍历下标连续的索引数组$cars=array("Volvo","BMW","SAAB");for($x=0;$x<count($cars);$x++) {//count() 函数用于返回数组的长度(元素数)    echo $cars[$x];    echo "<br>";}?>

foreach遍历数组

<?php//遍历关联数组$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");foreach($age as $x=>$x_value) {  echo "Key=" . $x . ", Value=" . $x_value;  echo "<br>";}// 遍历下标连续的索引数组$data = array(1,2,3,4,5,6,7,8,9,10);foreach($data as $k => $v){    echo $k . '------' . $v .'<br />';}// 遍历下标不连续的索引数组$data = array(1,2,3,4,5,6,10 => 7,8,9,10);foreach($data as $k => $v){    echo $k . '------' . $v .'<br />';}?>

下标不连续的索引数组

foreach遍历多维数组

<?php$data = array(        0 => array(            '中国' => 'china',            '美国' => 'usa',            '德国' => ' Germany',        ),        1 => array(            '湖北' => 'hubei',            '河北' => 'hebei',            '山东' => 'shandong',            '山西' => 'sanxi',        ),);//注:我们在使用foreach循环时,第一次循环将键为0和键为1的两个数组赋值给一个变量($value)。然后,再套一个循环遍历这个$value变量,$value中的值取出来,赋值给$k和$v。foreach($data as $value){    foreach($value as $k => $v){            echo $k . '-----' . $v .'<br />';    }    echo '----------分割线-----------<br />';}?>

0 0
原创粉丝点击