Abstract: PHP数组索引数组和关联数组的遍历,以及数组常用的函数;PHP文件处理常用函数以及不同模式下对文件的操作。

一、数组

1. 数组遍历

  • 索引数组
1
2
3
4
5
6
7
<?php
$arr1 = ['wm', 56, 'Beijing'];
for($i=0; $i<count($arr1); $i++){
echo $arr1[$i];
echo PHP_EOL;
}
?>
  • 关联数组

    foreach遍历

1
2
3
4
5
6
7
8
9
10
11
<?php
$arr = [
'name' => 'zs',
'age' => 18,
'add' => 'China'
];
foreach($arr as $item =>$value){
echo $item . "=>" . $value;
echo PHP_EOL;
}
?>

for遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$arr = [
'name' => 'zs',
'age' => 18,
'add' => 'China'
];

for($i=0; $i<count($arr); $i++){
echo key($arr) . '=>' . current($arr);
echo PHP_EOL;
next($arr);
}

?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$arr = [
'name' => 'zs',
'age' => 18,
'add' => 'China'
];
$arr1 = $arr;
$keyName = array_keys($arr);
$valueName = array_values($arr);
echo $keyName[0];
echo PHP_EOL;
for($i=0; $i<count($arr); $i++){
echo $keyName[$i] . "=>" . $arr[$keyName[$i]];
echo PHP_EOL;
}

for($i=0; $i<count($arr); $i++){
echo array_pop($arr1);
next($arr1);
echo PHP_EOL;
}
fwrite(STDOUT,iconv('utf-8','gb2312','使用for循环遍历关联数组'));
echo PHP_EOL;
for($i=0; $i<count($arr); $i++){
echo $keyName[$i] . '=>' . $valueName[$i];
echo PHP_EOL;
}
?>

2. 数组常用函数

函数名称 作用
array_keys(array, value, strict) 返回数组中所有的键名
array_values(array) 返回数组中所有的值
count(array)/sizeof(array) 返回数组中元素的数目
array_merge(array1, array2) 把一个或多个数组合并为一个数组
array_key_exists(key, array) 检查指定的键名是否存在与数组中
sort() 对数值组进行升序排序
in_array(needle, haystack) 检查数组中是否存在指定的值
array_unique() 删除数组中重复的值
array_pop(array) 删除数组中最后一个元素(栈)
  • array_keys(array, value, strict)
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$a = array("Volvo" => "XC90", "BMW" => "X5", "Toyota" => "Highlander");
//[0]=>Volvo [1]=>BMW [2]=>Toyota
print_r(array_keys($a));
//[0]=>Toyota
print_r(array_keys($a,"Highlander"));

$a=array(10,20,30,"10");
//[0]=>3
print_r(array_keys($a,"10",true));
?>
  • array_values(array) count()/sizeof()
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$a = array("Name" => "Peter", "Age" => "41", "Country" => "USA");
//[0]=>Peter [1]=>41 [2]=>USA
print_r(array_values($a));
//3
echo count($a);
echo PHP_EOL;
//3
echo sizeof($a);
echo PHP_EOL;
?>
  • array_merge(array1, array2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$a1 = array("a" => "red", "b" => "green");
$a2 = array("c" => "blue", "b" => "yellow");
//如果两个或更多个数组元素有相同键名,则最后元素会覆盖其他元素
//[a]=>red [b]=>yellow [c]=>blue
print_r(array_merge($a1, $a2));

$a=array(3=>"red",4=>"green");
//若数组键名是整数,则该函数将返回以键名0开始进行重新索引
//[0]=>red [1]=>green
print_r(array_merge($a));

?>
  • array_key_exists(key, array)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5");
if (array_key_exists("Volvo",$a))
{
echo "Key exists!";
}
else
{
echo "Key does not exist!";
}
$a=array("Volvo","BMW");
if (array_key_exists(0,$a))
{
echo "Key exists!";
}
else
{
echo "Key does not exist!";
}
?>
  • sort()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);

$clength=count($cars);
for($x=0;$x<$clength;$x++){
echo $cars[$x];
echo "<br>";
}
// BMW Toyota Volvo
$numbers=array(4,6,2,22,11);
sort($numbers);

$arrlength=count($numbers);
for($x=0;$x<$arrlength;$x++){
echo $numbers[$x];
echo "<br>";
}
//2 4 6 11 22
?>
  • in_array()
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sites = array("Google", "Runoob", "Taobao", "Facebook");

if (in_array("Runoob", $sites))
{
echo "找到匹配项!";
}
else
{
echo "没有找到匹配项!";
}
?>

在练习二中成绩输入实例中也使用了in_array函数

  • array_unique()
1
2
3
4
5
<?php
$a=array("a"=>"red","b"=>"green","c"=>"red");
// [a]=>red [b]=>green
print_r(array_unique($a));
?>
  • array_pop(array)
1
2
3
4
5
6
<?php
$a=array("red","green","blue");
array_pop($a);
// [0]=> red [1]=>green
print_r($a);
?>

二、文件处理

1. 打开文件

fopen模式

模式 描述
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;若文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;若文件不存在,则创建新文件。
a 追加,若文件不存在,则创建新文件。
a+ 读/追加。
x 只写。创建新文件。若文件已存在,则返回FALSE和一个错误。
x+ 读/写,创建新文件。若文件已存在,则返回FALSE和一个错误。

2.检测文件末尾(EOF)

1
2
3
if(feof($file)){
echo "文件末尾";
}

3. 逐行/字符读取文件

1
2
3
4
5
6
7
8
9
<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))
{
echo fgets($file). "<br>";
}
fclose($file);
?>
1
2
3
4
5
6
7
8
<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>

4. 写文件

fwrite(file, string, length)fputs(file, string, length)

1
2
3
4
5
<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);
?>
1
2
3
4
5
<?php
$file = fopen("test.txt","w");
echo fputs($file,"Hello World. Testing!");
fclose($file);
?>