PHP强化之03 - 数组 Array

作者: 四月不见 | 来源:发表于2018-05-30 16:08 被阅读1次

    一、语法

    1、简介

    PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

    可以用 array()语言结构来新建一个数组。自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。

    $array = array(
        0 => "bar",
        1 => "foo"
    );
    
    // 自 PHP 5.4 起
    $array = [
        0 => "bar",
        1 => "foo"
    ];
    

    2、类型的转换

    对于任意 integerfloatstringbooleanresource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array) $scalarValuearray($scalarValue) 完全一样。

    如果一个 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性,键名将为成员变量名。

    将 NULL 转换为 array 会得到一个空的数组。

    3、数组运算符

    例子 名称 结果
    $a + $b 联合 $a 和 $b 的联合。
    $a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE。
    $a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
    $a != $b 不等 如果 $a 不等于 $b 则为 TRUE。
    $a <> $b 不等 如果 $a 不等于 $b 则为 TRUE。
    $a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE。

    +运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。

    $a = array("a" => "apple", "b" => "banana");
    $b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
    
    $c = $a + $b;
    echo "Union of \$a and \$b: \n";
    var_dump($c);
    

    执行结果:

    Union of $a and $b: 
    array(3) {
      ["a"]=>
      string(5) "apple"
      ["b"]=>
      string(6) "banana"
      ["c"]=>
      string(6) "cherry"
    }
    

    数组中的单元如果具有相同的键名和值则比较时相等。

    $a = array("apple", "banana");
    $b = array(1 => "banana", "0" => "apple");
    
    var_dump($a == $b); // bool(true)
    var_dump($a === $b); // bool(false)
    

    二、常用方法

    1、对数组进行排序

    函数名称 排序依据 数组索引键保持 排序的顺序
    array_multisort() 键值关联的保持,数字类型的不保持 第一个数组或者由选项指定
    asort() 由低到高
    arsort() 由高到低
    krsort() 由高到低
    ksort() 由低到高
    natcasesort() 自然排序,大小写不敏感
    natsort() 自然排序
    rsort() 由高到低
    shuffle() 随机
    sort() 由低到高
    uasort() 由用户定义
    uksort() 由用户定义
    usort() 由用户定义

    注意:以上的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。

    2、数组与字符串间的转换

    1)implode - 将一个一维数组的值转化为字符串

    string implode ( string $glue , array $pieces )
    
    string implode ( array $pieces )
    

    2)explode — 使用一个字符串分割另一个字符串

    array explode ( string $delimiter , string $string [, int $limit ] )
    

    3)preg_split — 通过一个正则表达式分隔字符串

    array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
    

    相关方法:
    split — 用正则表达式将字符串分割到数组中
    str_split — 将字符串转换为数组

    其它常用方法

    range—根据范围创建数组,包含指定的元素!!
    list — 把数组中的值赋给一组变量
    is_array — 检测变量是否是数组
    array_merge — 合并一个或多个数组

    参考:

    官方文档:

    相关书籍:

    • 《PHP经典实例》 David Sklar & Adam Trachtenberg

    --《最后更新时间:2018/5/30》--

    相关文章

      网友评论

        本文标题:PHP强化之03 - 数组 Array

        本文链接:https://www.haomeiwen.com/subject/piltsftx.html