自学内容网 自学内容网

PHP数组

一.定义数组

通过在方括号内指定键名来给数组赋值,其代码格式如下:

$arr[$key] = value

其中,$arr为数组名;$key为键名,其类型为整型或字符串;value为值,可以为任意数据类型。

 1.索引数组:定义一个索引数组,代码如下:

$student[0] = '张亮‘;

$student[1] = '李丽’;

$student[2] = '王坤';

该示例将几个人的姓名存在数组$student中,第一个元素的值为张亮,第二个元素的值为李丽,第三个元素的值为王坤。

也可以定义如下索引数组,value的值可以为任意数据类型。

$student[0] = 123;       //值为整型

$student[1] = '孙琦';      //值为字符串型

$student[2] = 65.5;       //值为浮点数

$student[3] = true;       //值为布尔类型

2.关联数组。示例如下: 

 $student['id'] = '2008001';

 $student['name'] = '张琪';

 $student['sex'] = '女';

 $student['address'] = '河南省';

 $student['tel'] = '18237832347';

上述示例定义了一个关联数组$student,数组元素的“键”都是字符串,并且“键”与“值”具有一一对应的关系。

二.使用array[]定义数组

  使用array()定义数组时,是使用 “键=>值”的方式接收数组的元素,各个元素之间用逗号分隔开,语法格式如下:

$arr = array(key1 => value1,key2 => value2,...);

 其中$arr表示数组名;key1,key2表示键名;可以是数字,也可以是字符串;value1,value2表示对应的值,可以是任意类型的数据。

1.索引数组

定义索引数组,示例如下:

$student1 = array('张亮','李丽','王飞');         //省略键名

$student2 = array(1=>'张琪',4=>'王飞');      //指定键名

 上述代码定义$student1只指定了数组元素的值,没有指定键名,则$student1默认为索引数组,且键名从0开始依次递增,分别是"0,1,2"。

$student2数组变量的键名是指定的,第一个元素的键名为1,第二个元素的键名为4,这中方法在定义的时候不常用。

2.关联数组

$student = array('id' => '1008001', 'name'=>'张琪', 'sex'=>'女', 'address' =>'河南省', 'tel'=>'18237832347');

 还可以定义既有索引表示方式又有关联表示方式的数组元素,例如:

$arr = array(5,'a','id' => 123, 3=>'b','c');

5的键名为0,'a'的键名为1,123的键名为'id','b'的键名为3,'c'的键名为4,这种方法很少用

三.使用短数组语法定义数组

 $student =['id'=>'2008001', 'name' => '张琪', 'sex' => '女'];

$nam = ['张亮','李丽','王飞'];

用[]代替array(),分别定义一个关联数组$student和一个索引数组$name。

四.二维数组的定义

$students = array(

        '科学1班' => array('1' => '张亮', '2' => '李丽'),

        '科学2班' => array('1' => '李风','2' => '张森'),

        '科学3班' => array('1' => '李艳丽', '2' => '马良龙')

)

 五.访问,输出数组

$数组名[键名]

示例1:

$student = array('id' => '2008001', 'name'=> '张琪','sex'=>'女');//定义一个关联数组$student
echo $student['id'];       //输出结果:2008002
echo $student['name'];    //输出结果:张琪
echo $student['sex'];    //输出结果:女
$name = array('张亮','李丽','王飞'); //定义一个索引数组$name
echo $name[0];       //输出结果为:张亮
echo $name[1];       //输出结果为:李丽
echo $name[2];       //输出结果为:王飞

通过以上方式可以访问数组的某一个元素,如果想输出数组元素的所有值,可以使用print_r()和

var_dump()函数来实现。

1.print_r()函数

语法格式如下:

print_r(mixed $expression [,bool $return])

其中,参数expression是要打印的表达式,如果参数expression是字符串,整型或float类型,这输出变量值本身,如果参数expression是数组变量,将按照一定格式显示键和元素。

示例2:

$student = array('id' => '2008001', 'name' => '张琪', ' sex' => '女');

print_r($student);

  如果想要获取print_r()输出的内容,可使用return参数。该参数默认值为false,当此参数为true时,print_r()会直接返回string格式的信息,而不是输出:

$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
$a = print_r($student,true);        //$a包含了print_r的输出
echo $a;

2.var_dump函数

语法格式如下:

void var_dump (mixed $expression [,mixed $ expression [,...] ])

示例4:

$student = array('id'=>='2008001','name'=>'张琪','sex'=>'女');
var_dump($student);

 在输出数组时,建议使用<pre>标签将print_r()函数和var_dump()函数的调用语句包围。<pre>标签将保留空格和换行符,使输出更加清晰明了。

代码如下:

echo'<pre>';
$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
print_r($student);
echo'</pre>';

 六.遍历数组

所谓遍历数组,就是对数组的每一个元素依次进行访问。

第一种格式:

foreach (array_expression as $value)

{

     statement

}

第二种格式:

foreach (array_expression as $key => $value)

{

      statement

}

第一种语法格式仅将数组的值赋值给$value,第二种格式不仅将数组的值赋值给$value,而且将当前的键名赋值给$key。

示例3-1:使用第一种格式遍历一维数组

<?php
$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
foreach($student as $value){
echo $value;
echo'</br>';
  }
?>

 

示例3-2:使用第二种格式遍历一维数组。

<?php
$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
foreach($student as $key => $value) {
echo $key.'=>'.$value;
echo '<br/>';
 }
?>

 

例3-3:用上述方法遍历二维数组:

<?php
$students = array(
'科学1班' => array('张亮','李丽'),
'科学2班' => array('李风','张森'),
'科学3班' => array('李艳丽,'马良龙')
);                 //定义二维数组$students
foreach ($students as $key => $value)    //循环读二维数组,$value仍为数组
{
   echo $key .':&nbsp&nbsp'; //输出第一维度的键名
    foreach ($value as $k => $v)      //遍历一维数组$value中的数据
     {
         echo $k.'=>'.$v;     //输出一维数组的键名和值
         echo '&nbsp';       //输出空格
 }
echo'</br>';    //输出换行
}?>
   

 foreach()函数能访问遍历数组中的每一个元素的值,那么在遍历数组时,如果改变了当前元素$value的值,数组中元素的值是不会变的。

<?php
$arr = array(2,3,6);
foreach($arr as $value){
    $value = $value+4;
}
print_r($arr);

 

若想通过$value改变数组中的值,可以在关键字as后的元素值前面加上"&"符号,即遍历数组语句改为foreach($arr as & $value)

七.删除数组

当数组中不需要某个元素时,可以使用unset()函数进行删除,其语法格式为:

void unset (mixed $var [,mixed...])

其中,参数var表示要删除的变量名。

示例3-4:

<?php
$arr = array(5,4,3);
unset($arr[0]);  //删除数组中的一个元素
print_r($arr);
unset($arr[2]);
print_r($arr);
?>;

运行结果:

示例3-5:删除二维数组元素

<?php
$student = array(
    array('2008001','李正'),
    array('2008910','张亮'),
    array('2008970','刘洋')
);
unset($student[0]);
echo'<pre>';
print_r($student);
echo'</pre>';
?>

 unset($student)删除的是整个数组

八.常见数组函数

1.count()函数:功能用于统计数组arr中元素的个数。

语法:int count(mixed $arr[,int $mode])

 如果数组arr为多维数组的话,可以将mode参数的值设置为1或者COUNT_RECURSIVE,会递归计算多维数组arr中所以元素的个数。

示例:

<?php
$arr1 = array(4,8,9);
echo count($arr1);      //输出3
$arr2 = array(
               array(1,2,3),
               array(4,5,6),
               array(7,8,9)
              );
echo count($arr2);       //输出3
echo count($arr2,1);     //输出12
?>

2.max()函数  

语法:mixed max(array $values)

示例:

$arr1 = array(4,8,9);
echo max($arr1);        //输出9
$ arr2 = array('张亮','王飞');
echo max($arr2);    //输出王飞

3.min()函数

语法:mixed min(array $values)  

示例:

$arr1 = array(4,8,9);
echo min($arr1);      //输出4
$arr = array('张亮','王飞');
echo min($arr2);        //输出张亮

4.array_sum()函数

功能:将数组arr中所有值的和以整数或浮点数的结果返回

说明:PHP会自动将数组中的非数值类型的数据转换成整数或浮点数

语法:number array_sum(array $arr)  

示例:

$arr1 = array(4,8,9);
echo array_sum($arr1);      //输出21
$arr2 = array('1 张亮','2 王飞');
echo array_sum($arr2);       //输出3
$arr3 = array('张亮','王飞');
echo array_sum($arr3);      //输出0

5.array_product()函数

功能:将数组arr中所有值的乘积以整数或浮点数的结果返回

PHP会自动将数组中的非数值类型的数据转换成整数或浮点数 。

示例:

<?php
$arr1 = array(4,8,9);
echo array_product($arr1);   //输出结果288
$arr2 = array('1 张亮','2 王飞');
echo'<br>';
echo array_product($arr2);     //输出结果为2
$arr3 = array('张亮','王飞');
echo'</br>';
echo array_product($arr3);   //输出结果0
?>

6.array_count_values()函数

功能:统计数组arr中所有值出现的次数,结果返回一个新数组。新数组中用arr的值作为键名,该值出现的次数作为新数组的值。

语法: array array_count_values(array $arr) 

示例:

$arr = array(4,8,9,4,8);
print_r(array_count_values($arr1);  //输出array ([4] => 2 [8] => 2 [9] => 1)
$arr2 = array('张亮','王飞','张亮');
print_r(array_count_values($arr2));  //输出array ([张亮] => 2 [王飞] => 1)

九.数组指针函数

 1.current()函数

功能:用于返回数组arr中当前单元的值。

语法:mixed current (arr &$arr)

示例:

<?php
$arr1 = array(4,8,9);
echo current($arr1);
$arr2 = array('01' =>'张亮','02' =>'王飞','03' =>'李娟');
echo'</br>';
echo current($arr2);
?>

2.key()函数

功能:用于返回数组arr中当前单元的键名。

语法:mixed key(array $arr) 

$arr1 = array(4,8,9);      //输出0
echo key($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
echo key($arr2);   //输出01

3.nex()函数

语法:mixed next(array &$arr) 

示例:

$arr1 = array(4,8,9,10);
echo next($arr1);          //输出8
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
echo next($arr2);        //输出王飞

 4.prev()函数

功能:返回数组内部指针指向前一个单元的值,如果没有更多单元就返回false。

语法:mixed prev(array &$arr) 

示例:

$arr1 = array(4,8,9,10);
next($arr1);
echo prev($arr1);        //输出4
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
next($arr2);
echo prev($arr2);       //输出张亮

5.end()函数

功能:将数组arr的内部指针移动到最后一个单元,并返回该单元的值。

语法:mixed end(array &$arr) 

示例:

$arr1 = array(4,8,9,10);
echo end($arr1);          //输出10
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
echo end($arr2);     //输出李娟

6.reset()函数

功能:将数组arr的内部指针倒回到第一个单元,并返回第一个数组单元的值。 

语法:mixed reset(array &$arr)

$arr1 = arry('01'=>'张亮','02'=>'王飞','03'=>'李娟');
next($arr1);
next($arr1);
echo reset($arr1);      //输出张亮

十.检索函数

1.array_keys()函数

功能:用于获取arr数组中的键名,返回值是数组。如果指定了可选参数search_value,则只返回search_value值的键名,否则数组中的所有键名都会被返回。

$arr1 = array(2,4,6);
$result1 = array_keys($arr1);
print_r($result1);     //输出array([0]=>0 [1]=>1 [2]=> 2)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_keys($arr2,'王飞');
print_r($result2);    //输出array([0]=>02)

2.array_values()函数

功能:返回arr数组中的所有值并为其建立数字索引。

语法:array array_values(array $arr) 

示例:

$arr1 = array(2,4,6);
$result1 = array_values($arr1);
print_r($result1 );         //输出array ([0]=>2 [1] =>4 [2]=> 6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_values($arr2);
print_r($result2);     //输出array([0] => 张亮 [1]=> 王飞 [2]=>李娟)

3.in_array()函数

功能:在数组中寻找给的值,如果找到放回true,否则返回false

示例:

$arr1 = array(2,4,6);
$result = in_array(2,$arr1);
echo $result;     //输出1
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 =in_array('张亮',$arr2);
echo $result2;   //输出1
$result3 = in_array('张亮',$arr2,true);
echo $result3;  //输出1 

4.array_search()函数

示例:

$arr1 = array(2,4,6);
$result1 = array_search(4,$arr1);
echo $result1;    //输出1
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_search('张亮',$arr2);
echo $result2;     //输出01
$arr3 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result3 = array('张亮',$arr2,true);
echo $result3;     //输出01

5.array_key_exists()函数

功能:检查给定的键名key是否存在数组arr中。若给定的Key存在于数组中时返回true,否则返回false。key可以是任何能作为数组索引的值。

示例:

$arr1 = array(2,4,6);
$result1 = array_key_exists(0,$arr1);
echo $result1;         //输出1
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_key_exists('张亮',$arr2);
echo $result2;       //返回false

 6.array_unique()函数

功能:该函数先将值作为字符串排序,然后对每个值只保留第一个遇见到的键名。

$arr1 = array(2,4,6,6,3);
$result1 = array_unique($arr1);
print_r($result1);     //输出array ([0]=> 2 [1]=> 4 [2] => 6 [4] => 3)

 十.排序函数

1.sort()函数

功能:按升序对arr数组的值排序。为数组赋予新的"整数"键名,原有的键名将被删除。

示例:

$arr1 = array(2,6,6,3);
sort($arr);
print_r($arr);     //输出array ([0] => 2 [1] => 3 [3] => 6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
sort($arr2);
print_r($arr2);  //输出array ([0]=>张亮 [1]=>李娟 [2]=>王飞)

2.asort()函数

功能:按升序对arr数组的值排序,排序后保持数组元素原有的 "键值对" 对应关系。

示例:

$arr1 = array(2,6,6,3);
asort($arr1);
print_r($arr1);  //输出array ([0] => 2 [3] => 3 [1] => 6 [2]=>6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
asort($arr2);
print_r($arr2);    //输出array([01]=>张亮 [03]=>李娟 [02]=>王飞)

3.rsort()函数

功能: 按降序对arr数组的值排序。为数组赋予新的 "整数"键名,原有的键名将被删除。

示例:

<?php
$arr1 = array(2,6,6,3);
rsort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
rsort($arr2);
echo'</br>';
print_r($arr2);

 

4.arsort()函数

功能:按降序对arr数组的值排序,排序后保持数组元素原有的"键值对"对应关系。

示例:

<?php
$arr1 = array(2,6,6,3);
arsort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
arsort($arr2);
echo'</br>';
print_r($arr2);
?>

5.ksort()函数

功能:按照键名对arr数组元素进行升序排序,排序后保持数组元素原有的"键值对"对应关系。

示例:

<?php
$arr1 = array(2,6,6,3);
ksort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
ksort($arr2);
echo'</br>';
print_r($arr2);
?>

 6.krsort()函数 

功能:按照键名对arr数组元素进行降序排序保持数组元素原有的"键值对"对应关系。

示例:

<?php
$arr1 = array(2,6,6,3);
krsort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
krsort($arr2);
echo'</br>';
print_r($arr2);
?>

 

7.shuffle()函数

功能:打乱arr数组进行随机排序,为排序后的数组元素赋予新的键名。

示例:

$arr1 = array(2,6,6,3);
shuffle($arr1);
print_r($arr1);  //输出array ([0]=> 6 [1]=>2 [2]=>6 [3]=>3)

8.array_reverse()函数

功能:返回一个和数组arr元素顺序相反的新数组,如果preserve_key为true,则保留原来的键名,但是非数字的键则不受这个设置的影响,总是会被保留。

示例:

$arr1 = array(2,6,3);
$result1 = array_reverse($arr1);
print_r($result1);  //输出array ([0]=> 3 [1] =>6 [2] => 2)
$arra = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_reverse($arr2,true);
print_r($result2);    //输出array ([03]=> 李娟 [02} => 王飞 [03]=> 张亮)
$arr3 = array(2,6,3);
$result3 = array_reverse($arr1,true);
print_r($result3);   //array ([2] =>3 [1]=>6 [0]=>2)

十一.数组元素操作函数

1.array_push()函数

功能:将一个或多个元素var添加到数组arr的末尾,并返回新数组元素的个数。

示例:

$arr1 = array(2,6,3);
array_push($arr1,9,10);
print_r($arr1);     //输出array([0] =>2 [1]=>6 [2]=>3 [3]=>9 [4]=>10)
$arr2 = array('01'=>'张亮','02'=>'王飞');
array_push($arr2,'李娟');
print_r($arr2);   //输出array ([01]=>张亮 [02]=>王飞 [0]=>李娟)

2.array_pop()函数

功能:弹出并返回arr数组的最后一个元素,并将数组arr的长度减1。如果arr为空(或者不是数组)将返回null。

示例:

$arr1 = array(2,6,3);
array_pop($arr1);
print_r($arr1);   //输出array ([0]=>2 [1]=>6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
array_push($arr2,'李娟');
print_r($arr2);    //输出array ([01]=>张亮[02]=>王飞[0]=>李娟)

3.array_unshift()函数

功能:在数组arr开头插入一个或多个元素,返回新数组中元素的个数。

示例:

$arr1 = array(2,6,3);
array_unshift($arr1,0,1);
print_r($arr1) ;             //输出array([0]=>0[1]=>1[2]=>2[3]=>6[4]=>3)
$arr2 = array('01'=>'张亮','02'=>'王飞');
array_unshift($arr2,'李娟');
print_r($arr2);             //输出array ([0]=>李娟[01]=>张亮[02]=>王飞)

4.array_shift()函数

功能:移除数组arr的第一个元素,返回该元素的值,然后将数组arr其他的元素先前移动一位。如果array为空(或者不是数组),则返回null。

示例:

$arr1 = array(2,6,3);
array_shift($arr1);
print_r($arr1);       //输出 array([0]=>6 [1]=>3)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
array_shift($arr2);
print_r($arr2);       //输出 array([02]=>王飞[03]=>李娟)

 十二.其它函数

1.is_array()函数

功能:判断当前变量是否是数组,如果是则返回true,否则返回false

示例:

<?php
$arr = array(2,6,3);
if(is_array($arr)) {
    echo '$arr 是数组';
}else {
    echo'$arr不是数组';
}
?>

2.array_merge()函数

功能:合并一个或多个数组

示例:

<?php
$arr1 = array(2,6,3);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result1 = array_merge($arr1,$arr2);
print_r($result1);

$arr3 = array(2,6,3);
$arr4 = array('张亮','王飞','李娟');
$result2 = array_merge($arr3,$arr4);
print_r($result2);

$arr5 = array('01'=>2,6,'02'=>3);
$arr6 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result3 = array_merge($arr5,$arr6);
print_r($result3);

 

3.array_rand()函数

功能:从数组中随机取出一个或多个元素的键。

示例:

<?php
$arr = array('张亮','王飞','李娟');
print_r(array_rand($arr));
print_r(array_rand($arr,2));
?>

 

 

4.range()函数

功能:创建一个给定范围的数组。

 示例:

<?php
$arr1 = range('a','d');
print_r($arr1);
$arr2 = range(1,6,2);
print_r($arr2);
?>

 

 

 

 

 

 

 

 


原文地址:https://blog.csdn.net/mengyao2001/article/details/142630189

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!