PHP数组-创新互联

PHP 中数组有两种模式:索引数组和关联数组。索引数组使用数字作为键,

目前创新互联已为上1000家的企业提供了网站建设、域名、网站空间、网站托管、服务器租用、企业网站设计、扶余网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

而关联数组则使用字符串作为键。 打印数组 print_r() var_dump() var_export();

使用 list 函数将元素值返回至变量

//使用 list 函数

list($name, $age, $gender) = array('张三', 33, '男');

//输出元素值的变量

echo $name.'的性别是:'.$gender.',今年'.$age.'岁';

//只获取姓名和性别

list($name,,$gender)  =  array('张三', 33, '男')

元素值的增减

1.第一种增加数组元素值的方法:数组名+[] = 元素值,即可在数组尾部增加一个元

素值。

//原数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//在数组尾部添加一个元素值

$phone[] = 'OPPO'; //或$phone['R9'] = 'OPPO'实现关联数组元素增加

2.使用 array_unshift 函数从数组头部增加元素值

//在头部添加元素值,数值索引将重新计算,字符串索引保持不变

array_unshift($phone, 'OPPO', '金立');

3.使用 array_push 函数从数组尾部增加元数值

//在尾部添加元素值,类似$phone[] = 'OPPO'

array_push($phone, 'OPPO', '金立');

4.使用 array_shift 函数从数组头开始删除

//从数组开头删除一个元素值,数值索引重新计算,字符串索引不变

array_shift($phone);

5.使用 array_pop 函数从数组结尾开始删除

//从数组结尾删除一个元素值

array_pop($phone);

6.使用 array_splice 函数删除或插入元素值

//从位置 2(第三个元素开始),删除 3 个

array_splice($phone, 2, 3);

//从位置 2(第三个元素开始),删除至末尾

array_splice($phone, 2);

元素值的遍历

大多数情况下,我们需要将数组里所有的数据遍历出来,再按照指定的格式:比如二维

表格的形式展现出来。此时,我们需要一些带有循环能力的语句。

1.foreach 遍历

//最推荐常用的遍历方式

foreach ($phone as $key=>$value) {

echo $key.'|'.$value.'
';

}

2.for 循环

//这种只能遍历数值索引数组,字符串索引没有 key

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

echo $phone[$i].'
';

}

数组判断操作

1.使用 in_array 函数可以判断一个元素是否在这个数组中。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//判断元素值为三星是否在数组中

echo in_array('三星', $phone);

2.使用 array_key_exists 函数可以判断键值或索引是否存在这个数组中。

//数组

$computer = array('联想'=>'X808', '华硕'=>'Y560', '微星'=>'Z890');

//判断键值为联想的元素是否在数组中

echo array_key_exists('联想', $computer);

3.使用 array_search 函数可以搜索元素值的索引值。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//返回搜索的键

echo array_search('三星', $phone);

数组转换操作

1.使用 array_keys 函数可以返回数组中的索引,并组成一个新数组。

//数组

$computer = array('联想'=>'X808', '华硕'=>'Y560', '微星'=>'Z890');

//提取索引并当作元素组成新数组

$keys = array_keys($computer);

//输出

var_export($keys);

2.使用 array_values 函数返回所有元素值并重新生成一个数值索引数组。

//数组

$computer = array('联想'=>'X808', '华硕'=>'Y560', '微星'=>'Z890');

//提取元素值并创建新数组

$values = array_values($computer);

//输出

var_export($values);

数组拆合操作

1.使用 array_chunk 函数分组数组。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//每两个分一组,组成多维数组

$chunk = array_chunk($phone, 2);

//打印测试

print_r($chunk);

2.使用 array_merge 函数组合数组。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//数组 2

$computer = array('联想'=>'X808', '华硕'=>'Y560', '微星'=>'Z890');

//整合两个数组

$array = array_merge($phone, $computer);

//打印输出

print_r($array);

3.使用 array_combine 函数合并数组。

//数组 1

$computer = array('联想'=>'X808', '华硕'=>'Y560', '微星'=>'Z890');

//数组 2

$phone = array('苹果', '华为', '三星');

//取数组 1 的值作为键,取数组 2 的值作为元素值,然后合并

$array = array_combine($computer, $phone);

//打印输出

print_r($array);

4.使用 array_intersect 函数返回数组中的交集。

//数组 1

$color1 = array('a'=>'green', 'red', 'blue');

//数组 2

$color2 = array('b'=>'green', 'yellow', 'red');

//返回交集并创建新数组

$array = array_intersect($color1, $color2);

//打印输出

print_r($array);

5.使用 array_diff 函数返回数组的差集。

//数组 1

$color1 = array('a'=>'green', 'red', 'blue');

//数组 2

$color2 = array('b'=>'green', 'yellow', 'red');

//返回差集,并建立新数组

$array = array_diff($color1, $color2);

//打印

print_r($array);

数组计算操作

1.使用 count/sizeof 函数可以返回数组的元素个数。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//得到数组的元素个数

echo count($phone);

//多维数组

$price = array(

array('小米 8', 100, 2999),

array('iphone9 plus', 50, 7999),

array('锤子 x', 10, 3999)

);

//递归统计

echo count($price, 1);

2.使用 array_pad 函数填充数组。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//向右填充两位,数组本身 6 位

$array = array_pad($phone, 8, '占位');

//打印查看

print_r($array);

//负数,可以在左边填充

$array = array_pad($phone, -8, '占位');

3.使用 array_fill 函数给定的值填充数组。

//创建索引从 3 开始,4 个值为 banana 的数组

$array = array_fill(3, 4, 'banana');

//输出

var_export($array);

4.使用 array_sum 函数求出数组所有值的和。

//数值数组

$num = array(1, 2, 3, 4, 5, 6);

//求和

echo array_sum($num);

5.使用 array_product 函数返回数组所有数值的乘积。

//数组

$num = array(1, 2, 3, 4, 5, 6);

//求乘积

echo array_product($num);

6.使用 array_unique 函数移出数组中重复的值。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子', '苹果');

//移除重复的值

$array = array_unique($phone);

//输出

var_export($array);

7.使用 array_flip 函数将键和值对调。

//数组

$computer = array('联想'=>'X808', '华硕'=>'Y560', '微星'=>'Z890');

//交换键和值

$array = array_flip($computer);

//输出

var_export($array);

8.使用 array_rand 函数从数组中随机取出一个或多个元素值。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//随机返回索引

$keys = array_rand($phone);

//输出

var_export($keys);

//随机取出两个

$keys = array_rand($phone, 2);

9.使用 array_count_values 函数统计所有的值出现的次数。

//数组

$phone = array('苹果', '华为', '三星', '三星', '魅族', '魅族');

//统计

$count = array_count_values($phone);

//输出

var_export($count);

10.使用 array_column 函数返回数组中指定的一列。

//多维数组

$grade = array(

array(

'数学'=>95,

'语文'=>92,

'英语'=>97

),

array(

'数学'=>99,

'语文'=>95,

'英语'=>92

),

array(

'数学'=>92,

'语文'=>95,

'英语'=>93

),

);

//返回语文一列

$chinese = array_column($grade, '语文');

//输出

var_export($chinese);

数组迭代操作

1.使用 each 函数获取当前数组指针定位的键值对,并让指针向下一个位置移动一步。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//获取第一个位置的键值对,并将指针下移

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

//打印第一个位置的键值对

echo $key.'-'.$value;

//获取第二个位置的键值对,并将指针下移

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

//打印第二个位置的键值对

echo $key.'-'.$value;

2.使用 current 函数返回当前数组指针指向的元素值。

//数组

$phone = array('苹果', '华为', '三星', '小米', '魅族', '锤子');

//获取当前指针的元素值

$one = current($phone);

//获取当前指针的元素值,注:并不会下移指针

$two = current($phone);

//输出

echo $one;

//输出

echo $two;

3.使用 next 函数将数组指针移动至下一位。

//获取一位元素值

$one = current($phone);

//指针下移一位

next($phone);

//获取下一位元素值

$two = current($phone);

next

4.使用 prev 函数将指针移动至上一位。

//往上一位移动

prev($phone);

5.使用 reset 函数将指针移至第一位。

//移至第一位

reset($phone)

6.使用 end 函数将指针移至末尾。

//移至末尾

end($phone);

7.使用 key 函数返回当前指针元素的键。

//移至末尾

key($phone)

数组排序操作

1.使用 sort 函数对数组进行从低到高排序。(按值排序,并重新分配索引)

//数组

$array = array('green', 'red', 'orange', 'blue');

//对源数组进行排序

sort($array);

//打印

print_r($array);

$sort_flags 值较多,我们一一解释一下:

(1).SORT_REGULAR - 正常比较单元(不改变类型,默认值)

1.如果是字符串,会按照首字母从低到高顺序排列;

2.如果是数值,会按照数字从小到大排列,如果其中是数值字符串,不影响;

3.如果是中文字符,在 GBK 的情况下,会按照中文字符的拼音排序,如果是

UTF8,则需要进行一些转换,这里暂时不深入探讨。

(2).SORT_STRING - 单元被作为字符串来比较

//数组

$array = array(2, 12);

//按字符串模式排序

sort($array, SORT_STRING);

//输出

print_r($array);

(3).SORT_NUMERIC - 单元被作为数字来比较

//数组

$array = array('2', '12');

//按数字排序

sort($array, SORT_NUMERIC);

//输出

print_r($array);

(4).SORT_NATURAL 自然排序,SORT_FLAG_CASE 和自然排序合并,实现不区分

大小写排序。

//数组

$array = array('Apple1', 'apple2', 'Apple3', 'apple4');

//不区分大小写

sort($array, SORT_NATURAL | SORT_FLAG_CASE);

//输出

print_r($array);

2.使用 rsort 函数对数组进行从高到低排序。(按值排序,并重新分配索引)

//数组

$array = array('green', 'red', 'orange', 'blue');

//对源数组进行排序

sort($array);

//打印

print_r($array);

3.使用 usort 实现自定义排序。(按值排序,并重新分配索引)

//数组

$array = array(7, 3, 5, 9, 1, 4, 2);

//自定义排序

usort($array, function ($a, $b) {

if ($a == $b) {

return 0;

}

return ($a < $b) ? -1 : 1;

});

//输出

print_r($array);

4.asort、arsort、uasort 函数对应上面三个函数的功能,只不过不会重新分配索引。

//数组

$array = array('green', 'red', 'orange', 'blue');

//从低到高排序,但不改变索引

asort($array);

//输出

print_r($array);

5.ksort、krsort、kasort 函数对应上面三个函数的功能,只不过对键进行排序。

//数组

$array = array('x'=>'green', 'j'=>'red', 'b'=>'orange', 'h'=>'blue');

//对键进行从低到高排序

ksort($array);

//输出

print_r($array);

6.使用 shuffle 函数对数组进行随机排序。

//数组

$array = array('green', 'red', 'orange', 'blue');

//实现随机排序

shuffle($array);

//输出

print_r($array);

7.使用natsort实现自然排序,使用natcasesort函数实现不区分大小写的自然排序。

//数组

$array = array('demo8.php', 'demo1.php', 'demo10.php', 'demo5.php');

//自然排序

natsort($array);

//输出

print_r($array);

8.使用 array_reverse 函数实现翻转数组并重新生成。

//数组

$array = array('green', 'red', 'orange', 'blue');

//翻转数组并返回翻转的数组

$reverse = array_reverse($array);

//输出

var_export($reverse);

数组函数补齐

1.使用 compact 函数将变量和值整合成数组。

//变量和值

$name = 'Mr.Lee';

$age = 33;

$job = 'teacher';

//整合成数组

$result = compact('name', 'age', 'job');

//输出

var_export($result)

2.使用 extract 函数将数组的键值解析变量和值。

//数组

$info = array('name'=>'Mr.Lee', 'age'=>33, 'job'=>'teacher');

//解析成变量

extract($info);

//输出变量

echo $name.$age.$job;

3.使用 array_change_key_case 返回字符串键名为小写或大写的数组。

//数组

$color = array('Red'=>'apple', 'Orange'=>'banana');

//转换键名为默认小写并返回新数组

$array = array_change_key_case($color);

//输出

var_export($array);

4.使用 array_filter 函数过滤元素值。

//数组

$color = array('red', 'blue', 'orange', 'green', 'yellow');

//回调函数进行判断过滤

$array = array_filter($color, function ($value) {

if ($value != 'green') {

return $value;

}

});

//输出

var_export($array);

5.使用 array_map 函数处理元素值。

//数组

$num = array(1, 2, 3, 4, 5);

//对元素值进行逐个处理

$array = array_map(function ($n) {

return $n * $n * $n;

}, $num);

//输出

print_r($array);

//多个数组

$num = array(1, 2, 3, 4, 5);

$enlish = array('one', 'two', 'three', 'four', 'five');

//回调函数为 null,可以合并两个数组

$array = array_map(null, $num, $enlish);

//输出

print_r($array);

6.使用 array_reduce 函数迭代的处理元素值简化为单一值。

//数组

$num = array(1, 2, 3, 4, 5);

//迭代处理

$total = array_reduce($num, function ($v, $w) {

$v += $w;

return $v;

});

//输出

echo $total;

7.使用 array_replace 函数替换数组元素。

//数组

$color = array('red', 'blue', 'orange', 'green');

//替换的数组

$replacements = array(0=>'yellow');

//执行替换并生成新数组

$array = array_replace($color, $replacements);

//输出

var_export($array);

8.使用 array_walk 函数可以通过回调函数自定义数组中每个元素值。

//数组

$color = array('red', 'blue', 'orange', 'green');

//更改数组中的元素值

array_walk($color, function (&$value) {

if ($value == 'orange') {

$value = 'yellow';

}

});

//数组

print_r($color)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:PHP数组-创新互联
本文URL:http://ybzwz.com/article/ddcgsi.html