标签:
数组是PHP中一个
很很很很很很很很很很重要
的一个数据类型
。
学习数组,大家主要学习两部份的知识:
1.数组的定义,定义中的一些注意的坑
2.数组的函数使用
数组在之前我们让大家记住两个观点:
多个不同类型
的数据,是一个复合数据类型。那我们来进行简单的回顾:
<?php
$shu = array(1 , 1.5 , true ,‘天王盖地虎,小鸡炖蘑菇‘);
echo ‘<pre>‘;
var_dump($shu);
echo ‘</pre>‘;
?>
在上例中,我们发现我们存入了:
注:
上例中echo pre这个标签的主要目的是为 原样输出
<HTML的时候学习过&tt;,格式展示的更好看,更清晰。
我们用var_dump()打印出来显示看一下效果:
看图说话:
键值对应符
。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。元素
, 元素
就是 键值对
的组合。在学习JavaScript的时候也有键值对的
我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:
① 索引数组的声明
所谓索引数组:就是 下标
全为 整型
的 数组
。
索引数组的下标必须要从0开始吗? |
---|
答:这个问题其实不然,索引数组并不一定要从0开始。 |
那如何能够不从0开始呢? |
---|
答:需要用到大家在上面学的一 小块知识 哟。就是键值对应符。我们来动手写写。 |
代码从模拟开始,模拟长了就有了自己的风格!有点像武侠中的 象形拳
.
<?php
$kele = array(‘只有不断努力才能博得未来‘,10 => ‘NoAlike‘, ‘胖先生课堂‘ , ‘信胖哥得永生‘, 19 => ‘我最喜欢的歌是悟空‘ , ‘欧洲杯开始了‘);
//打印显示$kele
echo ‘<pre>‘;
var_dump($kele);
echo ‘</pre>‘;
?>
上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从 10
开始的。
不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。
<?php
$kele = array(
‘只有不断努力才能博得未来‘,
10 => ‘NoAlike‘,
‘胖先生课堂‘ ,
‘信胖哥得永生‘,
19 => ‘我最喜欢的歌是悟空‘ ,
‘欧洲杯开始了‘
);
//打印显示$kele
echo ‘<pre>‘;
var_dump($kele);
echo ‘</pre>‘;
?>
代码不是给你一个人看的,是给大家看的,漂亮优雅的代码就是你的形象
运行代码效果:
看图说话:
下标为0
)。下标为10和下标为19
,都是通过我指定的下标值。最大值+1
。例如:我最喜欢的歌是悟空下标为19.我在后面加上了:欧洲杯开始了。它的下标自动增长为了20。
难吗?其实不难,对不对
索引数组
中增加元素学习完了索引数组的创建,接下来我们学习索引数组的 增加 | 修改 | 删除
。
<?php
$minren = array(
‘林志玲‘,
‘王珞丹‘,
‘郑晓彤‘,
‘贾玲‘
);
//如何向这$minren这个数组中增加元素呢
//猜猜范冰冰的下标是多少?
$minren[] = ‘范冰冰‘;
$minren[100] = ‘范爷‘;
//它的下标又为几呢?
$minren[] = ‘李晨‘;
?>
总结:
我们还拿刚刚的数组来举例:
待着疑问 |
---|
1.假设我不喜欢:郑晓彤,如何将郑晓彤给删掉呢? |
2.如果删除掉后范冰冰的下标为多少呢? |
3.如果在后面再追加一个元素,会填掉:“郑晓彤”留下来的空吗? |
<?php
$minren = array(
‘林志玲‘,
‘王珞丹‘,
‘郑晓彤‘,
‘贾玲‘,
‘范冰冰‘
);
unset($minren[2]);//弄掉了
$minren[] = ‘金星‘;
echo ‘<pre>‘;
var_dump($minren);
echo ‘</pre>‘;
?>
运行效果:
看图说话:
删除变量
的方式来删除数组里面的值。不会
让后面的下标向前自动移动。而是原来的值为多少就为多少我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。
<?php
$minren = array(
‘林志玲‘,
‘王珞丹‘,
‘郑晓彤‘,
‘贾玲‘,
‘范冰冰‘
);
$minren[4] = ‘范爷‘;
$minren[0] = ‘志玲,不结婚是等我吗?‘;
echo ‘<pre>‘;
var_dump($minren);
echo ‘</pre>‘;
?>
运行结果:
看图说话:
用变量名[键] = 新值。就把数组中的值定的值修改了。
很简单吧
<?php
//直接写一个变量后面加上中括号,声明变量
$qi[] = ‘可口可乐‘;
$qi[10] =‘百事可乐‘;
echo ‘<pre>‘;
var_dump($qi);
echo ‘</pre>‘;
?>
<?php
$pang = [
‘杨幂‘,
‘王珞丹‘,
100 => ‘刘亦菲‘,
‘黄圣依‘,
‘范冰冰‘
];
echo ‘<pre>‘;
var_dump($pang);
echo ‘</pre>‘;
?>
问:数组长多是多少?
索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。
通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。
声明关联数组:
不同的地方:
必须要指定 字符串
的 下标
和 必须
要使用 键值对应符
。
<?php
//声明一下关联数组
$rela = array(
‘帅‘ => ‘胖先生‘,
‘很帅‘ => ‘黄晓明‘,
‘灰常灰常帅‘ => ‘宁泽涛‘,
‘有男人味的大叔‘ => ‘吴秀波‘,
);
//再来玩玩简洁声明
$drink = [
‘美‘ => ‘凤姐‘,
‘很美‘ => ‘芙蓉姐姐‘,
‘verymei‘ => ‘王涛‘,
‘心中滴女神呀‘ => ‘杨澜‘,
100 => ‘孙俪‘,
‘娘娘‘,
];
// 输出 $rela
echo ‘<pre>‘;
var_dump($rela);
echo ‘</pre>‘;
// 输出$drink
echo ‘<pre>‘;
var_dump($drink);
echo ‘</pre>‘;
?>
运行结果:
我们通过实验知道:
重点:
关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。(观察上图中的值为孙俪、娘娘的两个元素)。
<?php
$drink = [
‘美‘ => ‘凤姐‘,
‘很美‘ => ‘芙蓉姐姐‘,
‘verymei‘ => ‘王涛‘,
‘心中滴女神呀‘ => ‘杨澜‘,
100 => ‘孙俪‘,
‘娘娘‘,
];
//追加方式与索引数组是一样的
$drink[‘ynj‘] = ‘伊能静‘;
//输出试试
echo ‘<pre>‘;
var_dump($drink);
echo ‘</pre>‘;
//删除一个试试
unset($drink[‘verymei‘]);
echo ‘<pre>‘;
var_dump($drink);
echo ‘</pre>‘;
//将芙蓉姐姐 改成:心里美才是真的美
$drink[‘很美‘] = ‘心里美才是真的美‘;
echo ‘<pre>‘;
var_dump($drink);
echo ‘</pre>‘;
?>
运行结果:
<?php
$drink[‘nf‘] = ‘农夫山泉‘;
$cocacola = ‘可口可乐‘;
//当然可以是变量哟
$drink[‘kl‘] = $cocacola;
$data = array(
‘kl‘ => $cocacola,
);
?>
通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。 括号里面插入字符串下标,一样也声明成功
。
后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。
数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢? |
---|
当然可以 |
在学习数组的时候,我们定义了这样一组名词。对于 WEB前端
的各位请了解即可
注:
索引数组和关联数组当中都可以再插入其他数组,让数组变为 多维的
。
我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。
1.一维数组
<?php
//一维的索引数组
$data = [1 , 2 , 3 , 4 , 10 => 250];
//一维的关联数组
$rela = [
‘beijing‘ => ‘北京‘,
‘shanghai‘ => ‘上海‘,
‘tj‘ => ‘天津‘,
];
echo ‘<pre>‘;
var_dump($rela);
echo ‘</pre>‘;
echo ‘<pre>‘;
var_dump($data);
echo ‘</pre>‘;
?>
2.二维数组
<?php
$person = array(
‘office‘ => ‘办公室‘,
//注意:插入第一个数组哟
‘family‘ => array(
‘爸爸‘,
‘妈妈‘,
‘yeye‘ => ‘爷爷‘,
‘nn‘ => ‘奶奶‘,
),
//注意:又插入了一个平级的数组
‘jiaotong‘ => array(
‘自行车‘,
‘摩托车‘,
‘汽车‘,
‘飞机‘,
),
);
echo ‘<pre>‘;
var_dump($person);
echo ‘</pre>‘;
?>
运行效果
我们发现变量person 是一个数组类型。有三个元素(size=3)。
好了,二维好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。
那如何访问:爷爷和爸爸这两个值呢?
<?php
$person = [
‘office‘ => ‘办公室‘,
//注意:插入第一个数组哟
‘family‘ => [
‘爸爸‘,
‘妈妈‘,
‘yeye‘ => ‘爷爷‘,
‘nn‘ => ‘奶奶‘,
],
//注意:又插入了一个平级的数组
‘jiaotong‘ => [
‘自行车‘,
‘摩托车‘,
‘汽车‘,
‘飞机‘,
],
];
//访问“爸爸”这什值
echo $person[‘family‘][0];
echo ‘<br />-----分割线------<br />‘;
//访问“爷爷”这什值
echo $person[‘family‘][‘yeye‘];
echo ‘<br />-----分割线------<br />‘;
//访问“汽车”这什值
echo $person[‘jiaotong‘][2];
?>
我们看看结果如下:
看图说话:
3.三维数组
<?php
$area = array(
‘china‘ => array(
‘上海‘,
‘湖北‘,
‘天津‘,
‘北京‘ => array(
‘hd‘ => ‘海淀‘,
‘朝阳‘,
‘房山‘,
‘cp‘ => ‘昌平‘,
),
‘广东‘ => array(
‘深圳‘,
‘广州‘,
‘佛山‘,
‘dg‘ => ‘东莞‘,
),
),
‘usa‘ => array(
‘华盛顿‘,
‘旧金山‘,
‘纽约‘ => array(
‘曼哈顿区‘,
‘皇后区‘,
‘布鲁克林区‘,
),
),
);
echo ‘<pre>‘;
var_dump($area);
echo ‘</pre>‘;
?>
运行效果:
看图说话:
所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。
获取数据
<?php
$area = array(
‘china‘ => array(
‘上海‘,
‘湖北‘,
‘天津‘,
‘北京‘ => array(
‘hd‘ => ‘海淀‘,
‘朝阳‘,
‘房山‘,
‘cp‘ => ‘昌平‘,
),
‘广东‘ => array(
‘深圳‘,
‘广州‘,
‘佛山‘,
‘dg‘ => ‘东莞‘,
),
),
‘usa‘ => array(
‘华盛顿‘,
‘旧金山‘,
‘纽约‘ => array(
‘曼哈顿区‘,
‘皇后区‘,
‘布鲁克林区‘,
),
),
);
//读取华盛顿
echo $area[‘usa‘][‘0‘];
//读取:布鲁克林
echo $area[‘usa‘][‘纽约‘][2];
//读取:昌平
echo $area[‘china‘][‘北京‘][‘cp‘];
//修改cp下标的值改为:西城区
$area[‘china‘][‘北京‘][‘cp‘] = ‘西城区‘;
//输出看看原来昌平的值是否发生了变化
echo $area[‘china‘][‘北京‘][‘cp‘];
?>
通过上面我们发现数组学习起来不难。
学习多维数组的难点:
注意格式:
将每个维度的 换行
、 缩进弄整齐
。就不容易出错了。
【切记】
- 数组元素间的分割符为逗号,
- 在数组中插入数组的时候,不要在结尾处写成了分号(
;
)
标签:
原文地址:http://www.cnblogs.com/pangxiansheng/p/5ec0d87089b7249db954710ca9128cc4.html