php数组

本文深入讲解了PHP中的数组概念,包括索引数组、关联数组及多维数组的定义、创建和访问方式。同时,介绍了多种数组操作技巧,如获取数组长度、排序、填充、删除等,帮助读者全面掌握PHP数组的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容:

数组

函数

对象

 

数组

什么是数组:

数组是特殊的变量,可以在单个变量中同时保存一个或一个以上的值,并且可以通过下标来访问其中的某一个值。在PHP中,用array()函数创建数组。同时在php中数组中可以存储任意类型的数据。

和定义变量一样:

$arr = array(‘我是’,‘一个’,‘数组’);

PHP中的数组一般分为两种:

索引数组和关联数组。第三种叫做多维度数组。

 

索引数组:

索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始的,数组中第一个值的键为0,第二个值的键为1,以此类推。

索引数组三种赋值方式:

1)用数组变量的名字后面加一个中括号的方式赋值。而且中括号内的键一定要是整数。

例如:$a[1]=0;

2)用array()创建一个空数组,使用=>分隔键和值,左侧表示键,右侧表示值。而且键一定是整数。

3)用array()创建一个空数组,直接在数组里用英文的单引号''或者英文的双引号""赋值,数组会默认建立从0开始的整数的键。

 

访问索引数组的内容:

1.直接使用索引来输出:

<?php

$a = array(1,2,3);

$b = $a[0];

echo $b;

?>

 

2.使用for循环输出:

<?php

$a = array("1","2","3");

for($i=0; $i<3; $i++){

     echo "<br />";

     echo "数组中的第".($i+1)."值为".$a[$i]."。";

}

?>

运行结果:

 

3.使用foreach输出:

<?php

$a=array("1","2","3");

foreach($a as $key=>$z){            //$z  ->  $v

     echo "<br />";

     echo "数组中的第".($key+1)."个值为".$z."。";

}

?>

运行结果:

关联数组:

关联数组是使用分配给数组的指定键的数组。里面的键和值是一一对应的,键不能重复。

关联数组赋值方式:

1)用数组变量的名字后面加一个中括号的方式赋值,而且在关联数组中,中括号内的键一定是字符串。例如,$arr['a']=1;

2)用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。

             例如,$arr = array('a'=>1,'b'=>'3');

补充:自PHP5.4起,可以使用短数组表示方法来代替array(),$array = ["foo" => "bar","bar" => "foo",];

 

访问关联数组的内容:

1.直接使用键来输出:

<?php

$score = array("Maths" => "数学");

$scoreMaths = $score["Maths"];

echo $scoreMaths;

?>

运行结果:数学

 

2.使用foreach输出:

<?php

$project = array(

     "China" => "语文",

     "Maths" => "数学",

     "English" => "英语"

);

foreach ($project as $k=>$z){     //$z  ->  $v

     echo $k."是".$z."。";

echo "<br >";

}

echo $project["Maths"];

?>

运行结果:

 

多维数组的简单使用:

1.二维数组

$arra = array('a',12,'33');

$arrb = array('ab','cc',45,$arra);

2.三维数组

$arra = array('1',2,3);

$arrb = array(11,$arra);

$arrc = array($arrb);

 

数组的一些操作技巧

1.获取数组的长度,count()和 sizeof()统计数组下标的个数

2.each()  返回当前元素的键名和键值,并将内部指针向前移动

3.list() 用于在一次操作中给一组变量赋值

4.数组元素的排序:

sort()、asort()和 ksort()都是正向排序,rsort()、arsort()和 krsort()是反向排序

5.array_count_values()统计数组内下标值的个数

6.current():每个数组都有一个内部指针指向他的当前单元,初始指向插入到数组中的第一个元素

7.array_pad函数,数组数组首尾选择性追加

8.unset()  用于销毁指定的变量

9.array_fill()   用键值填充数组

10.array_combine()  通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值

11.array_splice()删除数组成员

12.array_unique删除数组中的重复值

13.array_flip()交换数组的键值和值

14.array_search()搜索数值

 

代码:

//1 获取数组的长度, count() sizeof() 统计数组下标的个数
$arr=array("a","b","c",10,"a","b","c",10,"a","b","c",10);
echo count($arr);    //12
echo sizeof($arr);   //12

 

//2 each()    7.0以后不能用  返回当前元素的键名和键值,并将内部指针向前移动
$arr=array("abc","bcd","ade");
var_dump(each($arr));
var_dump(each($arr));
var_dump(each($arr));
var_dump(each($arr));   //bool(false)

 

$arr=array("abc","bcd","ade");
while (true){           //true  死循环
    $a=each($arr);
    if ($a==false){
        break;
    }
    var_dump($a);
}

 

//化简
while ($a=each($arr)){           //true  死循环
    var_dump($a);
}

 

运行结果:

 

//3 list() 用于在一次操作中给一组变量赋值
$arr=array("abc","bcd","ade");
echo $a=$arr[0];     //abc

$arr=array("abc","bcd","ade");
$a=$arr[0];
$b=$arr[1];
$c=$arr[2];
list($a,$b,$c)=$arr;
echo $b;         //bcd

 

$num=345;
$a1=str_split($num);
list($a,$b,$c)=$a1;
echo $a;    //3
echo $b;    //4
echo $c;    //5

//array_reverse()   反转数组
$a=array("aa","bb","cc","dd");
$a1=array_reverse($a);
list($a,$b,$c,$d)=$a1;
var_dump($a1) ;

 

运行结果:

 

$a=array("Volvo","XC90",array("BMW","Toyota"));
$reverse=array_reverse($a);
$preserve=array_reverse($a,true);
print_r($a);
print_r($reverse);
print_r($preserve);

运行结果:

 

//4  排序 sort正向排序 rsort反向排序
$arr=[7,13,12,4];    //快速排序算法
sort($arr);
var_dump($arr) ;     


rsort($arr);
var_dump($arr) ;     

运行结果:

 

//5   array_count_values()   统计数组内下标值的个数 (数组中出现的次数)
$arr=[7,13,12,4,9,10,0,12,4,9,10,0,12,4,9,10,0,12,4,9,10,0];
var_dump(array_count_values($arr));   //array(7) { [7]=> int(1) [13]=> int(1) [12]=> int(4) [4]=> int(4) [9]=> int(4) [10]=> int(4) [0]=> int(4) }

 

//7 array_pad()    array_pad(array $input, $pad_size, $pad_value)
$arr=[7,13,12,4];
var_dump(array_pad($arr,7,0));     // 正 补后面 array(7) { [0]=> int(7) [1]=> int(13) [2]=> int(12) [3]=> int(4) [4]=> int(0) [5]=> int(0) [6]=> int(0) }
var_dump(array_pad($arr,-7,0));   //负 补到前面 array(7) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(7) [4]=> int(13) [5]=> int(12) [6]=> int(4) }
var_dump(array_pad($arr,3,0));     // 追加   array(4) { [0]=> int(7) [1]=> int(13) [2]=> int(12) [3]=> int(4) }

 

//8 unset() 用于销毁指定的变量
$a=1;
unset($a);
echo $a;    // 删变量 Notice: Undefined variable: a in C:\phpStudy\PHPTutorial\WWW\phpstudy1\day03\arr.php on line 192

 

//9  array_fill() 用键值填充数组  array_fill ($start_index, $num, $value)  创建数组
$a=array_fill(3,10,”abc”);  // 从3开始 10次 输出abc
var_dump($a);     

运行结果:

//10  array_combine()  array_combine(array $keys, array $values)

//通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值
$arr=["a","b","c"];
$arr1=["aa","bb","cc"];
$arr2=array_combine($arr,$arr1);
var_dump($arr2);        //array(3) { ["a"]=> string(2) "aa" ["b"]=> string(2) "bb" ["c"]=> string(2) "cc" }

运行结果:

 

//11  array_splice()删除数组成员

// array_splice (array &$input, $offset, $length = null, $replacement = null)  
// 删除   替换  插入
$arr=["a","b","c","d","f","g"];
array_splice($arr,2,2);
var_dump($arr);                        // a b f g  删除cd

array_splice($arr,2);
var_dump($arr);                       //  a b    删除下标是2往后的

array_splice($arr,2,2,array("a","b","c"));
var_dump($arr);       // a b a b c    将cd 删除插入 abc

array_splice($arr,3,1,array("a","b","c"));
var_dump($arr);      //a b c a b c f g     将下标3的d 替换成 a b c

运行结果:

//12  array_unique删除数组中的重复值  

//去重 array_unique(array $array, $sort_flags = SORT_STRING)
$arr=["a","b","c","a","c","e"];
var_dump(array_unique($arr));    // a b c e

//13  array_flip()交换数组的键值和值
$arr=["a","b","c"];
$arr1=["aa","bb","cc"];
$arr2=array_combine($arr,$arr1);
var_dump($arr2);        //array(3) { ["a"]=> string(2) "aa" ["b"]=> string(2) "bb" ["c"]=> string(2) "cc" }
$arr3=array_flip($arr2);
var_dump($arr3);       // array(3) { ["aa"]=> string(1) "a" ["bb"]=> string(1) "b" ["cc"]=> string(1) "c" }

运行结果:

 

//14 array_search()搜索数值  array_search ($needle, array $haystack, $strict = null)
$arr=["a","b","c","a","c","e"];
echo array_search("c",$arr);    //2
var_dump(array_search("f",$arr));   //bool(false)

 

当遇到“Scala代码找不到或无法加载主类”的错误提示时,通常是因为以下几个原因导致的: ### 可能的原因及解决办法 #### 1. **缺少`main`方法** 检查你的程序是否包含一个标准的入口点(即 `main` 方法)。每个可以运行的 Scala 程序都需要一个 `main` 方法作为启动点。 ```scala object Main { def main(args: Array[String]): Unit = { println("Hello, World!") } } ``` 如果缺失了这个结构或者拼写有误,则会报错找不到主类。 --- #### 2. **文件名与对象名称不匹配** 在编译和运行 Scala 文件的时候,文件名需要与顶级 `object` 的名字完全一致。例如: - 如果你的文件名为 `Main.scala`,那么里面定义的对象也需要叫 `Main`。 - 命令行下使用 `scalac Main.scala && scala Main` 来编译并运行该文件。 --- #### 3. **classpath 配置问题** 当你在命令行中尝试运行程序时,如果没有指定正确的 classpath 或者路径配置错误,也可能引发此类问题。你可以通过 `-cp` 参数手动设置 classpath 路径。 示例: ```bash scalac -cp .:/your/library/path/*.jar Main.scala scala -cp .:/your/library/path/*.jar Main ``` --- #### 4. **依赖库未导入** 如果你的项目依赖于某些外部库,并且这些库没有正确添加到项目的构建工具(如 sbt、Maven)中,就会出现类似的问题。确保所有所需的 jar 包都被引入到了 project 中。 对于 SBT 用户来说,在 build.sbt 文件内添加对应的 dependencies 即可解决问题。 --- #### 5. **环境变量异常** 最后检查一下系统的 PATH 和 JAVA_HOME 是否已经按照官方文档的要求设置了正确的值。如果 Java 版本过高或过低也可能会引起冲突。 --- 如果你还是没能成功解决问题的话,请提供更多上下文信息以便进一步分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值