当前位置: 首页 > php>阅读正文

php数组、关联数组、数组基本操作、多维数组、数组写入文件

2021.9.6 朱丰华 1505 次 留下评论 2313字

数组,是存储多个数值的容器,php中的数组可以存储不同类型的数据。

基本语法

创建数组,使用array函数,在php5.4以后,可以使用[ ]创建

<?php
    $array1 = array("张三",18,'男');
    $array2 = ["李四", 22, '女'];
?>

调用数组的值,默认情况下,下标从0开始

<?php
    echo $array1[0];  // 张三
    echo "<br>";
    echo $array2[1];  // 22
?>

关联数组

对于前面创建的基本数组,我们使用var_dump()查看数组详细内容,会得到如下数据:

array(3) { [0]=> string(6) "张三" [1]=> int(18) [2]=> string(3) "男" }
array(3) { [0]=> string(6) "李四" [1]=> int(22) [2]=> string(3) "女" }

我们可以看到数组中的每一个元素,分别对应一个下标,从0开始,如果把数字0…n改为字符串类型的键名,就叫做”关联数组“

<?php
    $array3 = ['name'=>"王五", 'age'=>18];
    echo $array3['name'];  // 王五
?>

数组基本操作

获取数组的长度

使用count()方法,获取数组的长度

<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>

遍历数组

通常使用for循环,或foreach遍历,例如

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>

遍历关联数组

通常使用 foreach 遍历关联数组,foreach的基本格式为:$names as $name

这里,使用 $names as $key=>$value,其中

  • $names 表示关联数组本身
  • $key 表示键名
  • $value 表示键值
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

foreach($age as $key=>$value)
{
echo "Key=" . $key . ", Value=" . $value;
echo "<br>";
}
?>

数组排序

有多种排序方式,以下仅列举一部分

  • sort() – 对数组进行升序排列
  • rsort() – 对数组进行降序排列
  • asort() – 根据关联数组的值,对数组进行升序排列
  • ksort() – 根据关联数组的键,对数组进行升序排列
  • arsort() – 根据关联数组的值,对数组进行降序排列
  • krsort() – 根据关联数组的键,对数组进行降序排列

例如,以下实例

<?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

多维数组

数组中,包含很多个元素,其中的一个元素又可以是数组,那么就组成了多维数组

多维数组,只是简单的数组嵌套。

<?php
// A two-dimensional array:
$cars = array
(
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100),
    array('姓名'=>'张三', 'age'=>18)
);

echo $cars[0][1];  // 100
echo $cars[3]['姓名'];  // 张三
?>

数组写入文件

php数组可以用于保存一些配置信息,使用时从配置文件读取,修改后保存回文件中,由于普通文件是可直接访问的,这里的配置信息应该保持在php文件中

编写一个配置文件,假设如下(config.php)

<?php $config=array (
  'user' => 
  array (
    'name' => '张三',
    'pwd' => '123456',
    'email' => 'xxx@qq.com',
  ),
  'base' => 
  array (
    'cache' => false,
    'token' => 'fsdfsdfsdfwefre',
  ),
);

编写测试文件,代码如下:

<?php 
// 1.读取配置文件
$config_file='./config.php'; 
require($config_file);
// 2.修改配置文件
$config['user']['name'] = '李四';
// 3.保存修改后的文件
$text='<?php $config='.var_export($config,true).';'; 
if(false!==fopen($config_file,'w')){ 
  file_put_contents($config_file,$text);   // $config_file 是字符串
  echo '保存成功';
}else{ 
  echo '保存失败'; 
}

访问测试文件,出现“保存成功”,此时再次查看config.php,仅修改了username,实现了配置文件的修改。

这里var_export与var_dump相似,但前者仅仅把变量转字符串,后者会输出一些辅助信息。

这里不使用fwrite,而使用file_put_contents,两者功能相同,参数不同,这里第一个参数是一个字符串故使用后者,file_put_contents能将一个字符串写入到一个文件中,如果需要可以增加第三个参数FILE_APPEND表示追加而不是覆盖。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注