设为首页 收藏本站
查看: 578|回复: 0

[经验分享] PHP开发笔记系列(九)- 数组(一)

[复制链接]

尚未签到

发表于 2017-3-29 13:15:05 | 显示全部楼层 |阅读模式
      最近在做项目的时候,经常需要用到关联数组的处理,发现PHP里面有很多自带的数组处理函数,使用起来非常方便,而且效率不错,重新整理一下, 作为《PHP开发笔记系列(XAMPP+PhpEclipse+XDebug)》

的第九篇,《PHP开发笔记系列(九)- 数组(一)》
,记录PHP数组的相关操作。

  


      1. Php的数组定义

      Php的数组类似于JAVA中Map的概念,数组中的元素有一个特殊的标识符来区分,称为键(Key),而每个键对应的就是值(Value)。因此一个键(Key)和值(Value)的组合组成数组中的一个元素。Php数组中的元素比较灵活,每个元素不必是同一种类型,例如可以是整型、字符串等。

  


      2. Php的数组赋值

       Php的键可以是数值键(numerical),也可以是关联键(associative)。数值键与值没有真正关系,只是值在数组中的位置,而关联键则指向值。


$data[0] = '1st value';
$data[1] = '2nd value';
$data[2] = '3rd value';
$data['1st'] = '1st value';
$data['2nd'] = '2nd value';
$data['3rd'] = '3rd value';
echo $data[0];
echo $data['3rd'];

      3. Php的多维数组

       Php的数组可以签到,形成多维数组。可以通过以下方式定义:


$data['school1']['grade1'] = 'grade 1';
$data['school1']['grade2'] = 'grade 2';
$data['school1']['grade3'] = 'grade 3';
echo $data['school1']['grate1'];

      4. 创建数组

      除了使用上面的方式创建数组外,还可以通过构造函数array()进行数组创建,如下:


// 创建空数组
$data = array();
// 创建数值键非空数组
$numeric_data = array('1st value', '2nd value', '3rd value');
// 创建关联键非空数组
$map_data = array('1st'=>'1st value', '2nd'=>'2nd value', '3rd'=>'3rd value');
// 创建数组
$multi_map_data = array(
's1'=>array('g1'=>'grade1', 'g2'=>'grade2'),
's2'=>array('g3'=>'grade3', 'g4'=>'grade4')
);

      5. 使用list()提取数组

      list()函数与array()类似,但它可以在一次操作中从一个数组内提取多个值,同时为多个变量赋值。从数据库或文件中提取信息时,这种构造特别有用。

  


      例如,一个文件school.txt,需要从该文件读取信息,文件的每一行都包含学习的名称、年级、班级、学生姓名等信息,每一项使用“,”进行分割,如


file:array-list.txt
School1,grade1,class1,jack
School1,grade1,class2,danny
School1,grade2,class1,mike
School1,grade2,class2,lily
School2,grade1,class1,dick
School2,grade1,class2,mary
School2,grade2,class1,johny
School2,grade2,class2,smart
... ...
       可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据,代码如下:


file: array-list.php
url: http://localhost:88/array/array-list.php
<?php
$fp = fopen('school.txt', 'r');
while ($line = fgets($fp, 1024)) {
list($school, $grade, $class, $student) = explode(',', $line);
echo 'School: '.$school.' | ';
echo 'Grade: '.$grade.' | ';
echo 'Class: '.$class.' | ';
echo 'Student: '.$student.'<br/>';
}
fclose($fp);
?>
       6. 测试变量是否为数组

      使用数组时,有时候需要使用某个特定变量是否为一个数组。内置函数is_array()可以判断变量是否为数组,如果是返回TRUE,否则返回FALSE。


file: is_array.php
url: http://localhost:88/array/is_array.php
<?php
$arr = 1;
$arr1 = array();
$arr2 = array('id'=>1);
echo is_array($arr) ? 'TRUE' : 'FALSE';
echo '<br/>';
echo is_array($arr1) ? 'TRUE' : 'FALSE';
echo '<br/>';
echo is_array($arr2) ? 'TRUE' : 'FALSE';
echo '<br/>';
?>
      7. 输出数组

      输出数组的方式很多,可以使用foreach、for、while等进行数组元素遍历,代码如下:


file: output-array.php
url: http://localhost:88/array/output-array.php
<?php
$data[0] = '1st value';
$data[1] = '2nd value';
$data[2] = '3rd value';
foreach ($data as $d) {
echo $d.'<br/>';
}
echo '======================'.'<br/>';
$i = 0;
while ($i < count($data)) {
echo $data[$i].'<br/>';
$i++;
}
echo '======================'.'<br/>';
for ($i = 0; $i < count($data); $i++) {
echo $data[$i].'<br/>';
}
echo '======================'.'<br/>';
$map['1st'] = '1st value';
$map['2nd'] = '2nd value';
$map['3rd'] = '3rd value';
foreach ($map as $key => $value) {
echo $key.':'.$value.'<br/>';
}
?>
      今天先写到这,改天继续。

  

     本文地址:http://ryan-d.iteye.com/blog/1566123


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-357135-1-1.html 上篇帖子: 2012年最受欢迎的PHP框架 下篇帖子: cookie和session的关系(php版)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表