了解PHP数组

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值