PHP Array用法大全


array是什么

array是数据结构中的一种,在Web场景中使用得较多。了解好array的使用方法,能提升代码阅读的效率。

array通过辨认角标的方式可以分为两类array:

  • 角标为int数字的array
  • 角标为string数值array

两种的不同的array各自也有不同的操作方式,下文中角标为int数字的array简称为角标array,角标为string数值array简称为KV array;

如下内容大部分参考:https://segmentfault.com/a/1190000002723270#articleHeader9


array运算符

要访问一个变量的内容,可以直接使用其名称。

$a=996;

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

$name_array=array("zhangsan","lisi");

像其他变量一样,使用运算符=可以改变数组元素的内容。数组单元可以通过 array[key] 语法来访问。

arrary运算符:
1552062-20190506203749381-166488913.png

在web场景中arrary运算符,基本很少使用。至少我个人是这样,所以知道array能像变量一样使用运算符操作即可,用到在去查。


基本操作

CURD

array 函数大全:http://www.w3school.com.cn/php/php_ref_array.asp

创建array

在PHP中声明数组的方式主要有两种:

1.用array()函数声明数组:

# 1
$array = array();  
$array["key"] = "values";   

#2
$users = array('phone','computer','dos','linux');
echo $users;//只会打印出数据类型Array
print_r($users);//Array ( [0] => phone [1] => computer [2] => dos [3] => linux )

2.用range()函数创建一个角标数组:

$numbers = range(1,5);//创建一个包含指定范围的数组
print_r($numbers);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

遍历array

//通过循环来显示数组里所有的值
    for($i = 0 ;$i < 5;$i++){
        echo $users[$i];
        echo '<br/>';
    }

//通过count/sizeof统计数组中单元数目或对象中的属性个数
    for($i = 0; $i < count($users);$i++){
        echo $users[$i];
        echo '<br/>';
    }

//还可以通过foreach循环来遍历数组,这种好处在于不需要考虑key
    foreach($users as $value){
        echo $value.'<br/>';//点号为字符串连接符号
    }

//foreach循环遍历 $key => $value;$key和$value是变量名,可以自行设置
    foreach($users as $key => $value){
        echo $key.'<br/>';//输出键
    }

创建K=V类型array

从php5.4 起可以使用短数组定义语法,用 [] 替代 array()。有点类似于javascript中数组的定义;

//创建自定义键的数组
    $ceo = array('apple'=>'jobs','microsoft'=>'Nadella','Larry Page','Eric');

//如果不去声明元素的key,它会从零开始
    print_r($ceo);//Array ( [apple] => jobs [microsoft] => Nadella [0] => Larry Page [1] => Eric )

    echo $ceo['apple']; //jobs

//php5.4起的用法
    $array = [
        "foo" => "bar",
        "bar" => "foo",
    ];

    print_r($array); //Array ( [foo] => bar [bar] => foo ) 

插入

array_unshift( ) //函数将新元素添加到数组头
array_push( ) //函数将每个新元素添加到数组的末尾

通过unset( ) 填入角标([0]),删除array中的某个元素:

$array = array(0 => "a", 1 => "b", 2 => "c");
unset($array[1]);

通过array_splice() 填入角标([0]),删除array中的某个元素:
如果你使用 array_splice() 方法,数组的键会自动重新建立索引, 但对关联性的数组不起作用,需要使用 array_values() 将键转换为数字键。

$array = array(0 => "a", 1 => "b", 2 => "c");
array_splice($array, 1, 1);  // 1 到 1步长;

通过array_diff() 方法 填入V,删除array中的某个元素:

$array = array(0 => "a", 1 => "b", 2 => "c");
$array = array_diff($array, ["a", "c"]);

通过array_diff_key() 方法填入K,删除array中的某个元素:

在函数的第二个参数的键值位置输入要删除的键,值不需要,可随意。

$array = array(0 => "a", 1 => "b", 2 => "c");
$array = array_diff_key($array, [0 => "xy", "2" => "xy"]);

array_shift( ) //删除数组头第一个元素,与其相反的函数是
array_pop( ) //删除并返回数组末尾的一个元素

去重

利用php提供的API去重

<?php
    $color=array("red", "green", "blue", "yellow","blue","green");
    $result = array_unique($color);
    print_r($result);//Array ( [0] => red [1] => green [2] => blue [3] => yellow ) 
?> 

改就最简单了,只要定位到角标或者K,通过赋值符号就能覆盖原来的值。

$arr['a'] = "apple";
$arr['c'] = "pear";

查的方式很多,比如上面说的循环变量 就是查找,在每次遍历到一个新元素的时候,加上自己的判断就是一个查询功能,如果想要优化查询,可以深入数据库结构的排序和查找,后面会出相关文章。

//通过循环来显示数组里所有的值
    for($i = 0 ;$i < 5;$i++){
        echo $users[$i];
        echo '<br/>';
    }

//通过count/sizeof统计数组中单元数目或对象中的属性个数
    for($i = 0; $i < count($users);$i++){
        echo $users[$i];
        echo '<br/>';
    }

//还可以通过foreach循环来遍历数组,这种好处在于不需要考虑key
    foreach($users as $value){
        echo $value.'<br/>';//点号为字符串连接符号
    }

//foreach循环遍历 $key => $value;$key和$value是变量名,可以自行设置
    foreach($users as $key => $value){
        echo $key.'<br/>';//输出键
    }

PHP 提供的自带API:
array_search

$array = array("red","blue","red","Black");
$result=array_search("blue",$array);
var_dump($result);// 不存在这个元素返回 boole(flase) , 存在这个元素 返回int(角标)
if($result){
    echo "存在数值 $result";
}else{
    echo "不存这个数值";
}

in_array

$people = array("zhangshan", "lisi001", "wangwu", "zhouliu");

if (in_array("lisi001", $people))
  {
  echo "匹配已找到";
  }
else
  {
  echo "匹配未找到";
  }


each( )

each的指针指向第一个键值对,并返回第一个数组元素,获取其键值对,并包装成新数组

$users = array('trigkit4'=>22,'mike'=>20,'john'=>30);
//print_r(each($users));//Array ( [1] => 22 [value] => 22 [0] => trigkit4 [key] => trigkit4 )

//相当于:$a = array([0]=>trigkit4,[1]=>22,[value]=>22,[key]=>trigkit4);
$a = each($users);//each把原来的数组的第一个元素拿出来包装成新数组后赋值给$a
echo $a[0];//trigkit4
echo "<br/>";
echo $a[1];//22


echo "<br/>";
var_dump($a);

输出:

trigkit4
22
array(4) { [1]=> int(22) ["value"]=> int(22) [0]=> string(8) "trigkit4" ["key"]=> string(8) "trigkit4" }

应用场景:
暂时没想到,等想到在写进来吧。


list( )

感觉不出这个函数有什么用,鸡肋。

案例1:

$a = ['2', 'abc', 'def'];
list($var1, $var2) = $a;
echo $var1 . '<br/>';//2
echo $var2 . '<br/>';//abc

// 输出
//2
//abc

案例2:

$a = ['name' => 'lisi001', 'age' => 22, 'sex' => 'man'];
// list只认识key为数字的索引
list($var3, $var4) = $a;
echo $var3;

//输出报错信息


排序

正向排序:sort( )、asort( )和 ksort( )
实现反向:rsort()、arsort()和 krsort() //相对应的反向排序

shuffle( ) // 将数组个元素进 行随机排序。
array_reverse( ) //给出一个原来数组的反向排序

转载于:https://www.cnblogs.com/mysticbinary/articles/10862395.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值