Home > Backend Development > PHP Tutorial > PHP开发札记系列(九)- 数组(一)

PHP开发札记系列(九)- 数组(一)

WBOY
Release: 2016-06-13 13:26:18
Original
805 people have browsed it

PHP开发笔记系列(九)- 数组(一)

??? 最近在做项目的时候,经常需要用到关联数组的处理,发现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'];
Copy after login

?

??? 3. Php的多维数组

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

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

?

??? 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')
				  );
Copy after login

?

??? 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
... ...
Copy after login
?

?

??? 可以通过一个简单的循环使用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);

?>
Copy after login
?

??? 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/>';
    
?>
Copy after login

?

??? 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/>';
    }
    
?>
Copy after login

?

??? 今天先写到这,改天继续。


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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template