• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP函数库(core)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
数组函数:
array_change_key_case() 将 input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。本函数不改变数字索引。参数:
input    需要操作的数组。case    可以在这里用两个常量,CASE_UPPER 或 CASE_LOWER(默认值)。返回值:返回一个键全是小写或者全是大写的数组;如果输入值(input)不是一个数组,那么返回FALSE
 

例子:

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

以上例程会输出:

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

 
将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size个。参数:
input    需要操作的数组size    每个数组的单元数目preserve_keys    设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。返回值:得到的数组是一个多维数组中的单元,其索引从零开始,每一维包含了 size 个元素。
例子:
<?php
$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_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。参数:
input    需要取出数组列的多维数组(或结果集)column_key    需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)index_key    作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。返回值:从多维数组中返回单列数组
例子:
<?php
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    )
);
$first_names = array_column($records, 'first_name');
print_r($first_names);
?>
以上例程会输出:

Array([0] => John [1] => Sally)

$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
结果:Array([2135] => Doe [3245] => Smith)
  • array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。参数:
keys    将被作为新数组的键。非法的值将会被转换为字符串类型(string)。values    将被作为数组的值。返回值:返回合并的 array,如果两个数组的单元数不同则返回 FALSE
例子:
<?php
$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_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值。参数:
input    统计这个数组的值返回值:返回一个关联数组,用 input 数组中的值作为键名,该值在数组中出现的次数作为值。
例子:
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
以上例程会输出:
Array ( [1] => 2 [hello] => 2 [world] => 1 )
array_diff_assoc() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和array_diff() 不同的是键名也用于比较。参数:
array1    The array to compare fromarray2    An array to compare against...返回值:Returns an array containing all the values from array1 that are not present in any of the other arrays.
例子:
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);//键值对 0 => "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1
print_r($result);
?>
以上例程会输出:
Array ( [b] => brown [c] => blue [0] => red )
根据 array1 中的键名和 array2 进行比较,返回不同键名的项。 本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的。参数:
array1    从这个数组进行比较array2    针对此数组进行比较...返回值:array_diff_key() 返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。
例子:
<?php
$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_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集

对比了 array1 和 array2 并返回不同之处。 注意和 array_diff() 不同的是键名也用于比较。和 array_diff_assoc() 不同的是使用了用户自定义的回调函数,而不是内置的函数。参数:

array1    待比较的数组array2    和这个数组进行比较...key_compare_func    在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
int callback ( mixed $amixed $b )
返回值:返回一个 array,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。
例子:
<?php
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);
?>
以上例程会输出:
Array ( [b] => brown [c] => blue [0] => red ) 
array_diff_ukey() 返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。注意关联关系保留不变。本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的。参数:
array1    The array to compare fromarray2    An array to compare against...key_compare_func    在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
int callback ( mixed $amixed $b )
返回值:Returns an array containing all the entries from array1 that are not present in any of the other arrays.
例子:
<?php
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) } 
对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。参数:
array1    要被对比的数组array2    和这个数组进行比较...返回值:返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。例子:<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
以上例程会输出:
Array ( [1] => blue ) 
使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。参数:
keys    使用该数组的值作为键。非法值将被转换为字符串。value

填充使用的值。

返回值:返回填充后的数组。
例子:
<?php
$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_fill() 用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。参数:
start_index    返回的数组的第一个索引值。

如果 start_index 是负数, 那么返回的数组的第一个索引将会是 start_index ,而后面索引则从0开始。 (参见 例子)。

num    插入元素的数量。 必须大于 0。value    用来填充的值。返回值:返回填充后的数组。
例子:
<?php
$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 ) 
依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。参数:
input    要循环的数组callback    使用的回调函数

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

返回值:返回过滤后的数组。
例子:
<?php
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 )
无 callback:
<?php
$entry = array(
             0 => 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );
print_r(array_filter($entry));
?> 
结果:Array ( [0] => foo [2] => -1 ) 

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

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

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


trans    要交换键/值对的数组。

 

返回值:成功时返回交换后的数组,如果失败返回 NULL
例子:
<?php
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);
?>
以上例程会输出:Array ( [1] => b [2] => c ) 
array_intersect_assoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用于比较。参数:
array1    The array with master values to check.array2    An array to compare values against.array

要对比的数组变量的列表。

返回值:返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。
例子:
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "b" => "yellow", "blue", "red");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);
?>
以上例程会输出:Array ( [a] => green ) 
array_intersect_key() 返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。参数:
array1

The array with master keys to check.

array2

An array to compare keys against.

array

A variable list of arrays to compare.

返回值:Returns an associative array containing all the entries of array1 which have keys that are present in all arguments.
例子:
<?php
$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_intersect_uassoc() 返回一个数组,该数组包含了所有在 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 $amixed $b )

返回值:Returns the values of array1 whose values exist in all of the arguments.
例子:
<?php
$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_intersect_ukey() 返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。参数:
array1

Initial array for comparison of the arrays.

array2

First array to compare keys against.

array    Variable list of array arguments to compare keys against.key_compare_func    在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
int callback ( mixed $amixed $b )
返回值:Returns the values of array1 whose keys exist in all the arguments.
例子:
<?php
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_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。参数:
array1

The array with master values to check.

array2

An array to compare values against.

array

A variable list of arrays to compare.

返回值:返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。
例子:
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>
以上例程会输出:Array ( [a] => green [0] => red ) 
array_key_exists() 在给定的 key 存在于数组中时返回 TRUEkey 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。参数:
key

要检查的键。

search

一个数组,包含待检查的键。

返回值:成功时返回 TRUE, 或者在失败时返回 FALSE
例子:

 array_key_exists() 与 isset() 的对比

isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。

<?php
$search_array = array('first' => null, 'second' => 4);
// returns false
isset($search_array['first']);    
// returns true
array_key_exists('first', $search_array);
?>
  • array_keys — 返回数组中部分的或所有的键名

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

如果指定可选参数 search_value,则只返回该值的键名。否则 input 数组中所有键名都会被返回。参数:

 

input    一个数组,包含了要返回的键。search_value    如果指定了这个参数,只有包含这些值的键才会返回。strict    判断在搜索的时候是否该使用严格的比较(===)。返回值:返回 input 里的所有键。例子:<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
print_r(array_keys($array));
?>
以上例程会输出:Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size ) 

 
 
  • array_map — 将回调函数作用到给定数组的单元上
array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。参数:
callback

对每个数组的每个元素作用的回调函数。

arr1

将被回调函数(callback)执行的数组。

array

将被回调函数(callback)执行的数组列表。

返回值:返回一个数组,该数组的每个元素都数组(arr1)里面的每个元素经过回调函数(callback)处理了的。
例子:
<?php
function cube($n){
    return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
以上例程会输出:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ) 

array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。参数:


 

array1    要合并的初始数组。

 

 

 

...

 

返回值:一个结果数组,其中的值合并自附加的参数。
例子:
<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>
以上例程会输出:
Array ( [color] => Array ( [favorite] => Array ( [0] => red [1] => green ) [0] => blue ) [0] => 5 [1] => 10 ) 

array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。参数:


 

array1    Initial array to merge.

 

 

 

...

 

返回值:返回结果数组。
例子:
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
以上例程会输出:
Array ( [color] => green [0] => 2 [1] => 4 [2] => a [3] => b [shape] => trapezoid [4] => 4 ) 

array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。

关联(string)键名保持不变,但数字键名会被重新索引。

排序顺序标志:

  • SORT_ASC - 按照上升顺序排序
  • SORT_DESC - 按照下降顺序排序

排序类型标志:

  • SORT_REGULAR - 将项目按照通常方法比较
  • SORT_NUMERIC - 将项目按照数值比较
  • SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值SORT_ASC 和 SORT_REGULAR。参数:

 

arr    要排序的一个 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

上一篇:
PHP实现异步调用方法研究[转]发布时间:2022-07-10
下一篇:
[Ubuntu] 编译安装 PHP 依赖库发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap