登录  /  注册

php学习正式起航(3)

黄舟
发布: 2016-12-28 09:12:34
原创
823人浏览过

现在说数组
php数组有3种类型

数值数组 带有数字 id 键的数组
关联数组 数组中的每个 id 键关联一个值
多维数组 包含一个或多个数组的数组

关于数组的声明

<?php
$a[5];
$a[5]={1,2,3,4,5};
?>
登录后复制

像C语言这种常规的2种在php里是行不通的

php有个关键字array 是用来定义数组的

<?php
$a=array();
?>
登录后复制

这就是定义了一个空数组,不需要指定长度,里面元素可以动态添加,添加了多少个,这个数组就有多少大,而且可以继续添加,这点很爽哈

<?php
$a=array();
echo $a;
?>
登录后复制

这样可以打印a的类型 结果是Array

但是这样的话就会报错

<?php
$a=array();
echo $a[0];
?>
登录后复制

因为数组是空的

定义数组主要有两种方法,一种是用array

<?php
$a=array(1,2,3,4,5);
for($i=0;$i<count($a);$i++)
echo $a[$i]."<br/>";
?>
登录后复制

count关键字可以计算一个数组有多少个元素

还有一种就是

<?php
$a[0]=&#39;a&#39;;
$a[1]=&#39;b&#39;;
$a[2]=&#39;c&#39;;
for($i=0;$i<count($a);$i++)
echo $a[$i]."<br/>";
?>
登录后复制

直接给变量下标赋值,这个变量就自动成为数组了

但是一定要按下标顺序赋值
比如,这样就是错的

<?php
$a[0]=&#39;a&#39;;
$a[1]=&#39;b&#39;;
$a[2]=&#39;c&#39;;
$a[5]=&#39;d&#39;;
for($i=0;$i<count($a);$i++)
echo $a[$i]."<br/>";
?>
登录后复制

还有数组里的元素可以不是同一类型

<?php
$a=array(1,&#39;b&#39;,"hello",1.0);
for($i=0;$i<count($a);$i++)
echo $a[$i]."<br/>";
?>
登录后复制

是不是觉得很强大


现在说关联数组
关联数组比普通数组更强大了,下标不需要在用数字,而是自己取名字
这就是一种键对值的关系,跟java的map**很类似

<?php
$a=array("a"=>1,&#39;b&#39;=>2,"c"=>3);
echo $a["a"]."<br/>";
echo $a[&#39;b&#39;]."<br/>";
echo $a["c"]."<br/>";
?>
登录后复制

注意是=>不是->,里面的单引号和双引号可以互换
键=>值 键可以重复 但是结果是显示最后那个

<?php
$a=array("a"=>1,&#39;a&#39;=>2,"c"=>3);
echo $a["a"]."<br/>";
echo $a["c"]."<br/>";
?>
登录后复制

打印2 3

还有一种关联数组的定义,就是上面说过的

<?php
$a["a"]="hello";
$a["b"]="world";
echo $a["a"]."<br/>";
echo $a["b"]."<br/>";
?>
登录后复制

但是下面这样是错误的

<?php
$a["a"]=>"hello";
$a["b"]=>"world";
echo $a["a"]."<br/>";
echo $a["b"]."<br/>";
?>
登录后复制

另外数字也可以作为键

<?php
$a["1"]="hello";
$a["2"]="world";
echo $a["1"]."<br/>";
echo $a["2"]."<br/>";
?>
登录后复制

是可行的

不加引号可以输出来,但是php有提示注意,这个不要用

<?php
$a[&#39;a&#39;]="hello";
$a[&#39;b&#39;]="world";
echo $a[a]."<br/>";
echo $a [ b ]";
?>
登录后复制

下面说多维数组
在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组,以此类推

这就是定义了一个多维数组,二维的

<?php
$a=array(array(&#39;a&#39;,1,2),array("hello",3,1.1,));
echo $a[0][0];
?>
登录后复制

按C语言看,就是a[2][3] 不是array有几个就是几维了
同样,多维数组里面的元素也可以是多种类型
而且还可以这样

<?php
$a=array(array(&#39;a&#39;,1,2),array("hello",3,1.1,2,&#39;a&#39;));
echo $a[0][0];
?>
登录后复制

不要求每个子数组的元素个数都一致,这点比C语言爽吧

和普通数组一样,多维数组也可以这样定义,不过我想没人会这样做。。

<?php
$a[0][0]="hello00";
$a[0][1]="hello01";
$a[0][2]="hello02";
$a[0][3]="hello03";
$a[1][0]="hello10";
$a[1][1]="hello11";
$a[1][2]="hello12";
$a[1][3]="hello13"; 
for($i=0;$i<2;$i++){
for($j=0;$j<4;$j++)
echo $a[$i][$j]." "; echo "<br/>";
}
?>
登录后复制

这个二维数组是a[2][4] 2行4列,比较规矩的
注意,只要列的元素数量一致才能用循环打印出,C语言则不需要考虑这句话

还可以定义多维关联数组

<?php
$a=array(&#39;a&#39;=>array(&#39;a&#39;=>"hello",&#39;b&#39;=>"world"),&#39;b&#39;=>array(&#39;one&#39;=>1,&#39;two&#39;=>2,&#39;three&#39;=>3)); 
echo $a[&#39;a&#39;][&#39;a&#39;]; 
?>
登录后复制

会打印hello
就看上去是有点晕,因为关联数组里面又是关联的
也可以不用这样,像下面这样就清楚许多

<?php
$a=array(&#39;a&#39;=>array("hello","world"),&#39;b&#39;=>array(1,2,3)); 
echo $a[&#39;a&#39;][0]."<br/>".$a[&#39;b&#39;][2]; 
?>
登录后复制

打印出

hello
3
登录后复制

绝对不能这样玩

<?php
$a=array(array(&#39;a&#39;=>"hello",&#39;b&#39;=>"world"),array(&#39;one&#39;=>1,&#39;two&#39;=>2,&#39;three&#39;=>3)); echo $a[&#39;a&#39;]; ?>
登录后复制

错误的



前面说的都是二维数组,那么三维或以上的怎么定义,很简单

<?php
$a=array(array(array(1,2,3))); 
echo $a[0][0][0]; 
?>
登录后复制

打印1

<?php
$a=array(array(array(1,2,3)),array(array(4,5,6))); 
echo $a[1][0][0]; 
?>
登录后复制

打印4

<?php
$a=array(array(array(1,2,3),array(4,5,6)),array(array(7,8,9))); 
echo $a[0][1][1]; 
?>
登录后复制

打印5

应该有人看着会晕
现在分析一下
比如$a[0][1][1]; 最右边中括号的元素在数组里表示最里面的
$a=array(array(array(1,2,3),array(4,5,6)),array(array(7,8,9)));
最大分了3层,最右边中括号的元素就表示最里面的那层
然后往左的中括号就往外一层,以此类推

其实多看看就明白了,分的几层就是几维数组
另外3维数组也不需要了解太透,一般掌握到二维就可以了

前面没详说foreach循环,其实用foreach循环遍历一维数组最好了

<?php
$a=array(1,"hello",&#39;a&#39;); 
foreach($a as $value)
echo $value."<br/>"; 
?>
登录后复制

输出

1
hello
a
登录后复制

是不是很简单
$value 只是一个临时变量,用来保存数组元素,叫什么名都可以
等于是把一个数组交给代理变量,让它帮着来输出


<?php
$a=array(1,"hello",&#39;a&#39;); foreach($a as $value)
echo $a."<br/>"; ?>
登录后复制

这样是不会输出数组元素的
只会输出

Array
Array
Array
登录后复制

以上就是php学习正式起航(3)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号