您的位置:首页 > 编程语言 > PHP开发

php 数组函数学习笔记

2016-10-28 15:38 495 查看
【php array 数组 函数】

1、array_change_key_case 返回字符串键名全为小写或大写的数组
Discription : array array_change_key_case( array $array, [, int $case = CASE_LOWER]) //将数组中的所有键名改为全小写或者大写,由case参数决定
Parameters : array: The array to work on;//需要操作的数组
    case: Either CASE_UPPER or CASE_LOWER (default) // 可以用两个常量CASE_UPPER(大写)或者CASE_LOWER(小写)
Return Values : Returns an array with its keys lower or uppercased, or FALSE if array is not an array。//返回一个全大写或者小写的数组,若输入不是数组,则返回FALSE
Errors/Exceptions : Throw E_WANRING if array is not an array。//若输入不是数组,则抛出异常
Examples : 
$input_array = array("First" => 1, "SeCond" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
// Array([FIRST] => 1, [SECOND] => 4)
Notes : If an array has indices(two or more index) that will be the same once run through this function(e.g."key"and"kEY"), the value that is later in the array willoverride other indices。//如果一个数组中多个键名指数经过本函数变成一样的话(例如"key"和"kEY"),最后一个值将覆盖其他的值

2、array_chunk 将一个数组分割成多个
Discription : array array_chunk( array $input, int $size [, bool $preserve_key = false]) //将一个数组分割成多个数组,其中每个数组的单元数目由size决定,最后一个数组的单元目可能少于size个
Parameters : input : 需要操作的数组
    size : 每个数组的单元数目
    preserve_keys : 设为TRUE,可以使其保留输入数组原来的键名。如果指定了FALSE,那每个结果数组将用从零开始的新数字索引。默认值为FALSE
Return values : 得到的数组是一个多维数组中的单元,其索引从零开始,每一维包含了size个元素
Examples : 
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
// Array([0] = > Array([0] => a,[1] => b), [1] => array([0] => c, [1] => d), [2] => Array([0] => e))
// Array([0] => Array([0] => a, [1] => b), [1] => Array([2] => c, [3] => d), [4] => Array([0] => e))

3、array_column 返回数组中指定的一列
Discription : array array_column( array $input, mixed $column_key [, mixed $index_key])// 返回input数组键值为column_key的列,如果指定了可选参数index_key,那么input数组中这一列的值将作为返回数组中对应的键
Parameters : input : 需要取出数组的多维数组(或结果集)
    column_key :需要返回值的列,可以是索引数组的列索引,或者是关联属族的列的键。也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
    index_ley : 作为返回数组的索引/键的列,它可以是该列的整数索引,或者是字符串键值
Return values : 从多维数组中返回单列数组
Examples : 
$records = array(array(

        'id' => 2135,

        'first_name' => 'John',

        'last_name' => 'Doe',

    ),

      array(

        'id' => 3245,

        'first_name' => 'Sally',

        'last_name' => 'Smith',

    ),

      array(

        'id' => 5342,

        'first_name' => 'Jane',

        'last_name' => 'Jones',

    ),

      array(

        'id' => 5623,

        'first_name' => 'Peter',

        'last_name' => 'Doe',

    )
);
$first_names = array_column($records, 'first_name');
print_r($first_names);
//Array(

    [0] => John

    [1] => Sally

    [2] => Jane

    [3] => Peter
)
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
//Array(

  [2135] => Doe

    [3245] => Smith

    [5342] => Jones

    [5623] => Doe
)

3、array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
Discription : array array_combine( array $keys, array $values) //返回一个数组,来自keys数组的值作为键名,来自values数组的值作为相应的值
Parameters : keys : 将被作为新数组的键,非法的值将会被转换为字符串类型
    values : 将被作为新数组的值
Return values : 返回合并的新数组,如果两个数组单元数目不同则返回FALSE
Examples : 
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
//Array
(

    [green]  => avocado

    [red]    => apple

    [yellow] => banana
)

4、array_cout_values 统计数组中所有的值出现的次数
Discription : array array_cout_values( array $input) // 返回一个数组,该数组用input数组中的值作为键名,该值在input数组中出现的次数为值
Parameters : input : 统计这个数组的值
Return values : 返回一个关联数组,用input数组中的值作为键名,该值在数组中出现的次数作为值
Error/Exceptions : 对数组里面每个不是string和interger类型的元素抛出一个警告错误
Examples : 
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
//Array
(

    [1] => 2
       [hello] => 2
       [world] => 1
)

5、array_diff_assoc 带索引检查计算数组的差集
Discription : array array_diff_assoc( array $array1, array $array2 [, array $...]) // 返回一个数组,该数组包括了所有在arrray1但是不在任何其他参数数组中的值。
Parameters : array1 : 要对比的数组 ; array2 : 要对比的数组 ; ......
Return values : 返回一个数组包含所有不在其他数组的array1的元素
Examples : 
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
//上面的例子中可以看到键值对 "a" => "green" 在两个数组中都有,因此不在本函数的输出中。与此不同,键值对 0 => "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1
//Array
(

    [b] => brown

    [c] => blue

    [0] => red
)
Note : 本函数只检查了多维数组中的一维。当然可以用 array_diff_assoc($array1[0], $array2[0]); 检查更深的维度

6、array_diff_key 使用键名比较计算数组的差集
Discription : array array_diff_key( array $array1, array $array2 [, array $...]) //根据array1中的键名和array2进行比较,返回不同键名的项
Parameters : array1 : 从这个数组进行比较 ; array2 : 针对这个数组进行比较; ... : 更多比较数组。。。
Return values : 返回一个数组,该数组包括了所有出现在array1中但是未出现在其他参数数组中的键名的值
Examples : 
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
var_dump(array_diff_key($array1, $array2));
//在 key => value 对中的两个键名仅在 (string) $key1 === (string) $key2 时被认为相等。换句话说,执行的是严格类型检查,因此字符串的表达必须完全一样
//只比较键名的数据及数据类型,不比较对应的值
//array(2) {

  ["red"]=>

  int(2)

  ["purple"]=>

  int(4)
}
Note : 注意本函数只检查了多维数组的一维,当然可以用array_diff_key($array1[0], $array2[0]);来检查更深的维度

7、array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集
Discription : array array_diff_uassoc( array $array1, array $array2 [, array $...], callable $key_compare_func) //对比了array1和array2并返回不同之处
Parameters : array1 : 待比较的数组; array2 : 和这个数组进行比较; ... : 更多比较的数组; key_compare_func : 在第一个参数小于,等于或大于第二个参数是,该函数必须相应的返回一个小于,等于或大于0的整数
Return values : 返回一个array,该数组包含了所有在array1中但是不在其他参数数组中的值
Examples : 
function key_compare_func($a, $b)
{

    if ($a === $b) {

        return 0;

    }

    return ($a > $b)? 1:-1;
}

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
//上面的例子中"a" => "green"出现在两个数组中因此不在函数的输出中,但是0 => "red"却在输出中,因为第二个参数中的"red"的键名是1
//Array
(

    [b] => brown

    [c] => blue

    [0] => red
)
Note : 本函数只检查了多维数组中的一维。当然可以用 array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); 检查更深的维度

8、array_diff_ukey 用回调函数对键名比较数组的差集
Discription : array array_diff_ukey( array $array1, array $array2 [, array $...],callable $key_compare_func) //返回一个数组,该数组包括了所有未出现在任何其他参数数组中键名的值
Parameters : array1 : 要比较的数组; array2 : 要比较的数组; ... : 更多要比较的数组; key_compare_func : 在第一个参数小与等于大于第二个参数时,也返回相应返回一个小于等于大于0的整数
Return values : 返回一个array,该数组包含了所有在array1中但是不在其他参数数组中的值
Examples : 
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
var_dump(array_diff_key($array1, $array2));
//在 key => value 对中的两个键名仅在 (string) $key1 === (string) $key2 时被认为相等。换句话说,执行的是严格类型检查,因此字符串的表达必须完全一样
//只比较键名的数据及数据类型,不比较对应的值
//array(2) {

  ["red"]=>

  int(2)

  ["purple"]=>

  int(4)
}
Note : 注意本函数只检查了多维数组的一维,当然可以用array_diff_key($array1[0], $array2[0]);来检查更深的维度

9、array_diff 计算数组的差集
Discription : array array_diff( array $array1, array $array2 [,array $...]) //对比返回在array1中但是不在array2及任何其他参数数组的值
Parameters : array1 : 要对比的数组; array2 : 和这个数组进行比较; ... : 更多相比较的数组
Return values : 返回一个数组,该数组包括了所有在array1但不在任何其他参数数组的值,注意键名保持不变
Examples : 
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
//Array([1] => "blue")
Note : 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候;
      本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0], $array2[0]); 检查更深的维度

10、array_fill_keys 使用指定的键和值填充数组
Discription : array array_fill_keys( array $keys,mixed $value) // 使用value参数的值作为值,使用keys数组的值来填充一个数组
Parameters : keys : 使用该数组的值作为键,非法值将会被转换成字符串; value : 填充使用的值
Return values : 返回填充后的数组
Example :  
$keys = array('foo', 5, 10, 'bar');
$a = array_fill_keys($keys, 'banana');
print_r($a);
//Array
(

    [foo] => banana

    [5] => banana

    [10] => banana

    [bar] => banana
)

11、array_fill 用给定的值填充数组
Discription : array array_fill( int $start_index, int $num, mixed $value) // 用value参数的值将一个数组填充num个条目,键名由start_index参数指定的开始
Parameters : start_index : 返回数组的第一个索引值, 若此值为负数,则返回值的第一个索引为start_index,后面的索引则从0开始;
    num : 插入元素的数量,必须大于0; value : 用来填充的值 
Return value : 返回填充后的数组
Error/Exception : 如果num少于一个,则抛出异常
Example : 
$a = array_fill(5, 6, 'banana');
$b = array_fill(-2, 4, 'pear');
print_r($a);
print_r($b);
//Array
(

    [5]  => banana

    [6]  => banana

    [7]  => banana

    [8]  => banana

    [9]  => banana

    [10] => banana
)
Array
(

    [-2] => pear

    [0] => pear

    [1] => pear

    [2] => pear

)

12、array_filter 用回调函数过滤数组中的单元
Discription : array array_filter( array $array[, callable $callback[, int $flag = 0]]) //依次将array数组中的每个值传递到callback函数,如果callback函数返回TRUE,则input数组的当前值会被包含在返回的结果数组中,数组的键名保持不变。
Parameters : array : 要循环的数组; callback : 使用的回调函数,如果没有提供callback函数,将删除input中等值为false的条目; flag:决定callback接收的形式:
    ARRAY_FILTER_USE_KEY:callback接受键名作为的唯一参数;ARRAY_FILTER_USE_BOTH:callback同时接受键名和键值
Return values : 过滤后的数组
Examples : 
function odd($var)
{

    // returns whether the input integer is odd

    return($var & 1);
}
function even($var)
{

    // returns whether the input integer is even

    return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
//Odd :
Array
(
   [a] => 1
   [c] => 3
   [e] => 5
)
Even:
Array
(
   [0] => 6
   [2] => 8
   [4] => 10
   [6] => 12
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php array 函数