PHP基础语法– 数组【五】

一: 数组

1.
创建数组:(索引数组)
第一种方式:
$userNames = array(‘张三’,’李四’,’王五’);

$userNames[0]
索引数组初始化。数字索引初始值从0开始计算。

第二种方式:
range() 建立一个包含指定范围单元的数据。

$numer = range(1,10)
print_r($number);

2. 访问数组
访问一个变量的内容,可以直接使用其名称。
如果该变量是一个数组,可以使用变量名称和关键字或者索引的组合来访问内容

$number[0] $number[1]

3. 使用循环访问数组
两种方式
一种for循环

if($i=0;$i<10;i++) {
echo $number[$i]
}

另一种foreach遍历数组

foreach($numbers as $key => $value) {
$value
}

4. 计算数组的长度
count():计算数组中的单元数目或者对象中属性的个数。
或者 sizeof($arr) :计算数组中的单元数目count()的别名。

array_count_value() 统计数组内下标值得个数。
统计数组中所有“值”出现的次数 。(即数组中的值在这个数组中出现了几次,将值作为key 次数作为value 形成新的数组输出)

5.
打印数据用:print_r(arr);函数

6.
检测是否为数组变量: is_array();

二: 自定义键数组

1. 初始化相关数组

$ages = array(‘物理’=>’12’,’张三’ => ’13’);

2. 访问数组值
$age[‘物理’]

3. 追加数组

第一种情况:有一个元素的数组追加
$ages = array(‘李四’ => ’13’);
$ages[‘王五’] = 34;
$ages[‘李留’] = 35;

第二种:直接添加数组。无需创建直接添加。添加第一个元素自动建立数组。
$grade[‘物理’] =56;
$grade[‘化学’] =46;

二: 遍历数组

1. 使用循环语句:因为相关数组的索引不是数组,无法使用for循环。
但是可以使用foreach循环或者 list() 和each()结构

2. array each(array &array)
each()–返回数组中当前的键/值并将数组指针向前移动一步
取得当前数组单元数据。打包成数组。指针下移一位。

键值对被返回为4个单元的数组。键名为 0 1 key value
单元0 和 key 包含数组单元的键名。 1和vlaue包含数据

a:
$userAage[‘张三’] =34;
$userAges[‘王五’] =55;
$userAges[‘阿花’] = 23;

这里有一个指针默认指向数组第一个键值对。
这里的第一个键值对是 ‘张三’=> 34
如果each($userAges)。那么获取的是第一个键值对 ‘张三’=> 34
这个函数返回的是一个数组。
each将第一个键值对获取到人,然后包装成一个新数组。

print_r(each($userAges)); //第一步将 张三 34 包装成新数组
each($userAges) //这是第二步了指针已经下移一条 将 王五 55 包装成新数组

b: 用循环处理数组内容

//each()将值赋给$a. 如果$a存在则执行下边的
while( !!($a = each($userAges)) ) {
echo $a[‘key’] . ‘–‘ . $a[‘value’];
echo $a[0].’–‘.$a[1];
}

3. list() 函数

list() 将数组中的”值”赋给一些变量。(将一个数组分解成为一系列的值)
注意:list()仅能用于数字索引的数组并假定数字索引从0开始。

a:

$arr = array(‘a’,’b’,’c’);
list($var1,$var2,$var3) = $arr;
echo $var1; //a
echo $var2; //b
echo $var3; //c

b: 关联数组如果使用list()

①先用each($arr)将数组第一个单元的数据包装成数组。each()之后也是数组


$list($key,$value) = each($arr);

c: list() 与 each() 循环数组数据

while( !!(list($key,$value) = each($arr)) ) {
echo $key.’–‘. $value;
}

4. reset()函数
mixed reset(array &array)
将array数组内部的指针回到第一个单元并返回第一个数组单元的值。如果数组为空则返回false

用each($arr)循环数组后,指针一直下移。
如果在移动到某个位置后,我想把指针移动到开始。

5. 确定唯一的数组元素:array_unique();他会删除点里面相同的“值”得元素。赋给一个新的数组。
$userAges = array(
‘张三’ => 12,
‘李四’ =>34,
‘王五’ =>12
);
print_r($userAges);
$arr = array_unique($userAges);

6. 置换数组键和值 array_flip(): 他会对调数组中的key和value的位置
array array_flip(array);

三:数组中的数组

四: 数组的排序

1. sort()–对数组进行排序

a:
sort():对数组本身进行排序。返回布尔值(中文)
使用sort()可以将数组按字母升序排序(中文一样)

$fruit = array(‘banner’,’orange’,’apple’);

b: sort():对数字行进升序排序。

c: sort()函数第二个参数是可选的。进行指定排序类型的功能。
这个可选参数可以传递 SORT_REGULAR(默认值)、SORT_NUMERIC或者 SORT_STRING。

按照数组要看整体的数字大小。按照字符串只看第一位大小 (???)

2. asort():对数组进行排序并保持(原来数组的索引)索引关系。(对有索引的排序)

3. ksort():对数组进行键名排序(a-z)。

4.
sort()、asort()和ksort()都是正向排序。

反向排序: rsort() arsort() krsort()

5. shuffle()。 将数组个元素进行随机排序。 bool shuffle($arr)

array_reverse()。给出一个原来数组的反向排序
(一般array开头都会生成一个新数组)

6. 不会创建新数组
array_unshift()函数: 将新元素添加到数组头。
返回值:将得到目前数组的元素个数

$arr1 = array(‘a’);
array_unshift($arr1,’c’);

$arr = array(
‘张三’ => 12
);
array_unshift($arr, array(‘王五’ => 45));

array_push() 函数: 将每个新元素添加到数组的末尾。

array_shift()删除数组头第一个元素

array_pop()删除并返回数组末尾的一个元素

7.
array_rand($arr,num) 返回数组中一个或者多个键。
用来获取一个数组中的下标。
第二个参数表明随机获取几个

$arr = array(‘a’,’b’,’c’);
$a = array_rand($arr,1);
echo $a;随机输出arr数组的下标

$a = array_rand($arr,2);
print_r($a);//随机产生arr数组的两个下标。放入数组中。

五: 数组指针的操作。

在数组中浏览
each()
current(): 返回数组中当前的元素单元。current并没有下移
reset():将数组的指针指向第一个单元
end():
next():想数组中的指针向前移一位
pos():current()别名
prev():将数组指针回倒一位

六:
extract() : 从数组将变量导入当前的符号表中。

对于非数组索引的数组,而该数组又有许多关键字–值对。可以使用extract()将他们转换为一系列的变量变量。

函数extract()的作用是通过一个数组创建一系列的标量变量,这些变量的名称必须是数组中关键字的名称。而变量值则是数组中的值。

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/2483.html

发表评论

登录后才能评论