PHP数组操作函数

array_search — 在数组中搜索给定的值,如果成功则返回相应的键名

<?php
  $array  = array( 0  =>  'blue' ,  1  =>  'red' ,  2  =>  'green' ,  3  =>  'red' );
 
  $key  =  array_search ( 'green' ,  $array );  // $key = 2;
  $key  =  array_search ( 'red' ,  $array );    // $key = 1;
?>

array_key_exists()在给定的 key 存在于数组中时返回 TRUE

<?php
   $search_array  = array( 'first'  =>  null ,  'second'  =>  4 );
 
   // returns true
   array_key_exists ( 'first' ,  $search_array );
?>

isset — 检测变量是否设置 

 <?php
    $var  =  '' ;
     // 结果为 TRUE,所以后边的文本将被打印出来。
     if (isset( $var )) {
        echo  "This var is set so I will print." ;
    }
     // 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。
    // the return value of isset().
     $a  =  "test" ;
     $b  =  "anothertest" ;
     var_dump (isset( $a ));       // TRUE
     var_dump (isset( $a ,  $b ));  // TRUE
 
     unset ( $a );
     var_dump (isset( $a ));      // FALSE
     var_dump (isset( $a ,  $b ));  // FALSE
     $foo  =  NULL ;
     var_dump (isset( $foo ));    // FALSE
 ?>

array_pop — 将数组最后一个单元弹出(出栈)

<?php
   $stack  = array( "orange" ,  "banana" );
   array_push ( $stack ,  "apple" ,  "raspberry" );
 
   print_r ( $stack );  // Array([0] => orange,[1] => banana,[2] => apple,[3] => raspberry)
?>

array_push — 将一个或多个单元压入数组的末尾(入栈)

array_push()  将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。

<?php
   $stack  = array( "orange" ,  "banana" );
   array_push ( $stack ,  "apple" ,  "raspberry" );
 
   print_r ( $stack );  // Array([0] => orange,[1] => banana,[2] => apple,[3] => raspberry)
?>

array_unshift — 在数组开头插入一个或多个单元

array_unshift()  将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

<?php
  $queue  = array( "orange" ,  "banana" );
  array_unshift ( $queue ,  "apple" ,  "raspberry" );
 
  print_r ( $queue ); //Array([0] => apple,[1] => raspberry,[2] => orange,[3] => banana)
?>

array_shift — 将数组开头的单元移出数组 

array_shift()  将array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

<?php
  $stack  = array( "orange" ,  "banana" ,  "apple" ,  "raspberry" );
  $fruit  =  array_shift ( $stack );
 
  print_r ( $stack ); // Array([0] => banana,[1] => apple,[2] => raspberry)
?>

array_sum — 计算数组中所有值的和 

array_sum()  将数组中的所有值的和以整数或浮点数的结果返回。

<?php
  $b  = array( "a"  =>  1.2 ,  "b"  =>  2.3 ,  "c"  =>  3.4 );
 
  echo  "sum= "  .  array_sum ( $b ); // sum = 6.9
?>

array_unique — 移除数组中重复的值

array_unique()  接受 array 作为输入并返回没有重复值的新数组。注意键名保留不变。 array_unique()  先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。

<?php
   $input  = array( "a"  =>  "green" ,  "red" ,  "b"  =>  "green" ,  "blue" ,  "red" );
   $result  =  array_unique ( $input );
   print_r ( $result );  // Array([a] => green,[0] => red,[1] => blue)
?>

in_array — 检查数组中是否存在某个值 

如果找到指定的值则返回 TRUE,否则返回 FALSE 。in_array()是区分大小写的。

<?php
  $os  = array( "Mac" ,  "NT" ,  "Irix" ,  "Linux" );
  if ( in_array ( "Irix" ,  $os )) {
    echo  "Got Irix" ;
  }
  if ( in_array ( "mac" ,  $os )) {
    echo  "Got mac" ;
  }
  // 第二个条件失败,因为 in_array()  是区分大小写的,所以以上程序显示为: Got Irix
 
?>

array_chunk() —  函数把数组分割为新的数组块。

其中每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个。

//把数组分割为带有两个元素的数组,并保留原始数组中的键名:
<?php
$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31","David"=>"35");
print_r(array_chunk($age,2,true));
/*
Array ( 
    [0] => Array ( 
                    [Bill] => 60 
                    [Steve] => 56 
                 ) 
    [1] => Array ( 
                    [Mark] => 31 
                    [David] => 35 
                 ) 
       ) 
*/


//把数组分割为带有两个元素的数组,不保留原始键名
<?php
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
print_r(array_chunk($cars,2));
/*
Array ( 
    [0] => Array ( 
                    [0] => Volvo 
                    [1] => BMW 
                 ) 
    [1] => Array ( 
                    [0] => Toyota 
                    [1] => Honda 
                 ) 
    [2] => Array ( 
                    [0] => Mercedes 
                    [1] => Opel 
                 ) 
    ) 
*/
?>

?>

array_merge() — 函数把一个或多个数组合并为一个数组。

您可以向函数输入一个或者多个数组。


//[1]索引数组合并
<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
//Array ( [0] => red [1] => green [2] => blue [3] => yellow ) 
?>


//[2]将两个关联数组合并为一个数组:
<?php
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge($a1,$a2));
//Array ( [a] => red [b] => yellow [c] => blue ) 
?>



//[3]仅使用一个带有整数键名的数组参数:
<?php
$a=array(3=>"red",4=>"green");
print_r(array_merge($a));
//Array ( [0] => red [1] => green ) 
?>

注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。

array_merge_recursive() 函数把一个或多个数组合并为一个数组。

该函数与 array_merge() 函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

注释:如果您仅仅向 array_merge_recursive() 函数输入一个数组,结果与 array_merge() 相同,函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。

<?php
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge_recursive($a1,$a2));
//Array ( 
            [a] => red 
            [b] => Array ( 
                            [0] => green 
                            [1] => yellow 
                         ) 
            [c] => blue 
        ) 
?>

array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。

<?php
function myfunction($v)
{
  return($v*$v);
}

$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));
// Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 ) 
?>

list() 函数用于在一次操作中给一组变量赋值。

把数组中的值赋给一些变量。

<?php
$my_array = array("Dog","Cat","Horse");

list($a, $b, $c) = $my_array;
echo "I have several animals, a $a, a $b and a $c.";
// I have several animals, a Dog, a Cat and a Horse. 
?>

array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。

用以重置数组索引

<?php
$a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA");
print_r(array_values($a));
//Array ( [0] => Bill [1] => 60 [2] => USA ) 
?>

array_keys() 函数返回包含数组中所有键名的一个新数组。



<?php

//【1】返回包含数组中所有键名的一个新数组:

$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));
//Array ( [0] => Volvo [1] => BMW [2] => Toyota ) 


//【2】如果提供了第二个参数,则只返回键值为该值的键名。

$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a,"Highlander"));
//Array ( [0] => Toyota ) 


//【3】如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",true));
//Array ( [0] => 3 ) 
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章