与变量相关扩展-数组(1)

array array_change_key_case (array$input [,int$case ] )将input数组中的所有键名改为全小写或大写。改变是根据后一个选项case参数来进行的。可以在这里用两个常量,CASE_UPPERCASE_LOWER。默认值是CASE_LOWER。本函数不改变数字索引。   如果一个数组中的多个键名经过本函数后变成一样的话(例如 "keY" 和 "kEY"),最后一个值将覆盖其它的值。

$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));

 输出

Array
(
    [FIRST] => 1
    [SECOND] => 4
)

array array_chunk ( array $input , int $size [, bool $preserve_keys ] )

将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。

将可选参数 preserve_keys 设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是FALSE

$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
        )

    [2] => Array
        (
            [4] => e
        )

)
array array_combine ( array$keys , array$values )

返回一个 array,用来自keys 数组的值作为键名,来自values 数组的值作为相应的值。

如果两个数组的单元数不同或者数组为空时返回 FALSE

$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
)
array array_count_values       ( array $input      )

array_count_values() 返回一个数组,该数组用input数组中的值作为键名,该值在input 数组中出现的次数作为值。    

$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));

输出

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

array array_diff_assoc(array$array1 ,array$array2 [,array$ ... ] )比较key和value

返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和array_diff() 不同的是键名也用于比较。  

$array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array ("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);

输出

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

上面的例子中可以看到键值对 "a" => "green"在两个数组中都有,因此不在本函数的输出中。与此不同,键值对0 => "red" 出现在输出中是因为第二个参数中的"red" 的键名是1

键值对 key => value中的两个值仅在(string) $elem1 === (string) $elem2时被认为相等。也就是说使用了严格检查,字符串的表达必须相同。

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

array array_diff_key (array$array1 ,array$array2 [,array$ ... ] )比较key

返回一个数组,该数组包括了所有出现在 array1中但是未出现在任何其它参数数组中的键名的值。注意关联关系保留不变。本函数和array_diff() 相同只除了比较是根据键名而不是值来进行的。

$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));

输出

array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callback $key_compare_func ) 比较key和value用自定义函数在用户自定义函数中,仅对键进行比较。

array_diff_uassoc() 返回一个数组,该数组包括了所有在array1 中但是不在任何其它参数数组中的值。注意和array_diff() 不同的是键名也用于比较。

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。这和array_diff_assoc()不同的是还使用了比较索引的内部函数。

function key_compare_func($a, $b)
{
    if ($a === $b) {
        return 0;//返回0则会相同执行结果中显示
    }
    return ($a > $b)? 1:-1;//返回非0则为不相同,执行结果中不显示
}

$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);

array array_diff_ukey( array $array1 , array$array2 [, array$ ... ], callback$key_compare_func ) 比较key用自定义函数在用户自定义函数中,仅对键进行比较。

返回一个数组,该数组包括了所有出现在 array1中但是未出现在任何其它参数数组中的键名的值。注意关联关系保留不变。本函数和array_diff() 相同只除了比较是根据键名而不是值来进行的。

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。

function key_compare_func($key1, $key2)
{
    if ($key1 == $key2)
        return 0;
    else if ($key1 > $key2)
        return 1;
    else
        return -1;
}

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));

结果

array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

array array_diff(array $array1 , array$array2 [,array$ ... ] )比较value

array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);

结果

在 $array1 中多次出现的值一样处理,输出结果为:

Array
(
    [1] => blue
)

array array_fill_keys(array $keys , mixed$value

使用 value 参数的值作为值,使用keys 数组的值作为键来填充一个数组。

参数

keys

使用该数组的值作为键。非法值将被转换为字符串

value

填充使用的值。

返回值

返回填充后的数组。

$keys = array('foo', 5, 10, 'bar');
$a = array_fill_keys($keys, 'banana');
print_r($a);

返回值

Array
(
    [foo] => banana
    [5] => banana
    [10] => banana
    [bar] => banana
)

array array_fill(int $start_index ,int$num ,mixed$value )

开始下标              数组大小        值


value参数的值将一个数组填充 num 个条目,键名由start_index 参数指定的开始。注意num 必须是一个大于零的数值,否则 PHP 会发出一条警告。    

$a = array_fill(5, 6, 'banana');
print_r($a);

返回值

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)

array array_filter(array $input [, callback$callback ] )  callback函数为空则为过滤数组中的空value元素

依次将 input 数组中的每个值传递到 callback 函数。如果callback 函数返回TRUE,则input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

用户不应在回调函数中修改数组本身。例如增加/删除单元或者对 array_filter() 正在作用的数组进行 unset。如果数组改变了,此函数的行为没有定义。

如果没有提供 callback函数,array_filter()将删除input 中所有等值为FALSE 的条目。


function odd($var)
{
    return($var % 2 == 1);
}

function even($var)
{
    return($var % 2 == 0);
}

$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
)

array array_flip(array $trans )

返回一个反转后的 array,例如trans 中的键名变成了值,而trans 中的值成了键名。

注意 trans 中的值需要能够作为合法的键名,例如需要是integer 或者string。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转

如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。

array_flip() 如果失败返回FALSE。    

$trans = array_flip($trans);
$original = strtr($str, $trans);


$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);


返回值

Array
(
    [1] => b
    [2] => c
)

array array_intersect_assoc(array $array1 , array$array2 [,array$ ... ] )  比较key和value都一致则返回(第一个数组中的值)

返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和array_intersect() 不同的是键名也用于比较。  

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result_array = array_intersect_assoc($array1, $array2);

返回值

Array
(
    [a] => green
)

array array_intersect_key( array $array1 , array$array2 [, array$ ... ] )比较key一致则返回(第一个数组中的值)

返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。  

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_intersect_key($array1, $array2));
返回值

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
})

array array_intersect_uassoc( array $array1 , array$array2 [, array$ ... ], callback$key_compare_func ) 在用户自定义函数中,仅对键进行比较。

返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和array_intersect() 不同的是键名也用于比较。

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。

array1

Initial array for comparison of the arrays.

array2

First array to compare keys against.

array

Variable list of array arguments to compare values against.

key_compare_func

在第一个参数小于,等于或大于第二个参数时,该比较函数必须返回一个小于,等于或大于0的整数

int callback ( mixed$a, mixed$b )

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_intersect_uassoc($array1, $array2, "strcasecmp"));

返回值

Array
(
    [b] => brown
)


array array_intersect_ukey( array $array1 , array$array2 [, array$... ], callback$key_compare_func )在用户自定义函数中,仅对键进行比较。

返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。

function key_compare_func($key1, $key2)
{
    if ($key1 == $key2)
        return 0;
    else if ($key1 > $key2)
        return 1;
    else
        return -1;
}

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_intersect_ukey($array1, $array2, 'key_compare_func'));

输出

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
})

array array_intersect( array $array1 , array$array2 [, array$ ... ] )

返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。    

$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);

返回

Array
(
    [a] => green
    [0] => red
)

bool array_key_exists( mixed$key , array$search )

在给定的 key存在于数组中时返回 TRUEkey可以是任何能作为数组索引的值。array_key_exists()也可用于对象。

$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}


array array_keys( array $input [, mixed$search_value [, bool $strict ]] )

目标数组   要返回key的值  第二个参数的值是否用全等比较===(true/false)

返回 input数组中的数字或者字符串的键名。

如果指定了可选参数 search_value,则只返回该值的键名。否则input 数组中的所有键名都会被返回。自 PHP 5 起,可以用 strict 参数来进行全等比较(===)。

$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue", 0, '0');
print_r(array_keys($array, "blue"));//0,3,4
print_r(array_keys($array, "0"));// 5
print_r(array_keys($array, "0", true)); // 5,6

$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
print_r(array_keys($array));



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值