一:PHP中的数组和数据结构
1.数组的定义
- 数组可以存入多个不同类型的数据,甚至还可以存数组,这样的数组我们叫多维数组,是一个复合数据类型。
- 数组的英文是array
最简单的声明
$shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');
经过上面的例子我们发现,这里的数组存放了多个类型的数据,这里还有一个知识点,就是下标(索引) 的概念,数组中的第一个数据下标为0,第二个数据下标为1,依次类推,举个例子:
如果想从上面的数组中取出“true”这个参数,就能通过$shu[2]来代表“true”,即
$shu[2] =true
2.索引数组
上面讲到了索引数组的下标从0开始,那如果我们不想让他从0开始可以吗?当然是可以的,这里就要用到我们以前学的键值对应符
<?php $kele = array(5=>'我',20=>'PHP中文网'); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>
意思就是下标为5的位置和20的位置保存数据(相当于可以指定保存)
注意 :声明数组并不一定需要arary,这样也可以
$minren = [ '杨幂', '王珞丹', 100 => '刘亦菲', '黄圣依', '范冰冰' ];
3.关联数组
只要数组里面有一个下标为字符串的数组,就为关联数组。例如下面这种
$rela = array( '帅' => '陈奕迅', '很帅' => '黄晓明', '灰常灰常帅' => '宁泽涛', '有男人味的大叔' => '吴秀波', );
4.数组的操作
1.增加
$minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依' ); $minren[] = '范冰冰'; //这里不给出下标位置就是在最后一位数据的后一位添加数据 $minren[100] = '范爷'; //它的下标又为几呢?
2.删除
$minren = array( '杨幂', '王珞丹', '刘亦菲', '黄圣依', '范冰冰' ); //删除时后续的数据并不会自动填补 unset($minren[3]);
5.for循环遍历数据
遍历二字,从字面解释就是一个接一个全读访问一次,显示出来。
<?php //声明一个数组,值为1到10 $num = array(1,2,3,4,5,6,7,8,9,10); //我们可以得到数组中元素的总个数,为10 echo count($num); //遍历这个索引数组的话,我们就可以定义一个变量为$i //$i 的值为0,从0开始 //可以设定一个循环条件为:$i 在下标的(9)最大值之内循环 for($i = 0 ; $i < count($num) ; $i++){ echo $num[$i].'<br />'; } ?>
6.foeach函数遍历关联数组
我们通过上一章的内容学会了for循环遍历连续下标的索引数组。可是,我们发现我们遍历不了关联数组,也遍历不了下标不连续的索引数组。
那我们其实在学循环的时候,有一个循环是专门用来循环数组的。这个循环的基本语法就是foreach基本语法。基本格式如下:
foreach( 要循环的数组变量 as [键变量 =>] 值变量){ //循环的结构体 }
有些同学可能还是不太理解,在这里也给大家准备了一个实例
<?php $data = [ 'fj' => '凤姐', 'fr' => '芙蓉', ]; foreach($data as $key => $value){ echo $key . '-------' . $value . '<br />'; } // 结果 /* fj-------凤姐 fr-------芙蓉 */ ?>
注意:$key 和$value并不是变量名必须得为这两个名字。你命名为其他的也可以,如 $kai => $wen是一样的。 你要清楚键赋值给了哪个变量,值赋值给了另外的哪个变量。
7.list和each函数
1.list函数
它的功能:将索引数组下标为0的对应我变量1,下标1的对应变量2,依此类推,就像下面这样
<?php list($one , $two , $three) = array('张三' ,'李四' ,'王五'); //再次声明:单引号不结释变量,所以输出的是字符串$one echo '$one----'.$one.'<br />'; echo '$two----'.$two.'<br />'; echo '$three----'.$three.'<br />'; // 结果 /* $one----张三 $two----李四 $three----王五 */ ?>
2.echo函数
功能:传入一个数组。它会将其中的一个元素拆为个新数组。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。这个比较难以理解,还是通过下面的代码给大家解释一下吧
<?php //定义一个变量叫$kongjie $kongjie=[ 'gao'=>'穿黑衣服的', 'shou'=>'腿特别长特别细', 'mei'=>'好白', 'pl'=>'五官端正', 'type'=>'那就是女神', '我是吊丝不敢跟女神搭讪' ]; //第一次each $data = each($kongjie); echo '<pre>'; var_dump($data); echo '</pre>'; //第一次each 结果: /* array(4) { [1]=> string(15) "穿黑衣服的" ["value"]=> string(15) "穿黑衣服的" [0]=> string(3) "gao" ["key"]=> string(3) "gao" } */ ?>
读取了$kongjie中的第一个元素,将第一个元素('gao'=>'穿黑衣服的')分解开了。
分解后第一个元素变成了一个新数组。
在新数组里面,将原值(穿黑衣服的)放了索引下标1里面,同时放到了关联下标value里面。
在新数组里面,将原键(gao),放到了关联下标key里面,放到了索引下标0里面。
可以简单理解为从=号处将其分开,使得一个数据变成两个数据并构成新的数组
each的另外一个特性。读一次,向后移动一个元素。这里的元素指定是最开始的元素,而不是分割后的元素,即第一次each分割第一个元素,第二次分割第二个元素,以此类推,直到没有可以操作的元素
php今日份学习结束,(本来早就快写完了手贱按了一下撤销,什么都没了,也没备份,只能重新再写一遍了,我的难过谁能知道啊,哎) ,同志们要加油哇!