PHP处理数组常用函数和使用案例(PHP Array)

PHP Array简介,数组函数允许您访问和操作数组。支持单维和多维数组。安装 数组函数属于 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 — 检测变量是否设置 

如果已经使用 unset()  释放了一个变量之后,它将不再是 isset() 。若使用 isset()  测试一个被设置成 NULL  的变量,将返回 FALSE 。同时要注意的是一个 NULL  字节("\0")并不等同于 PHP 的 NULL  常数。 

 <?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 — 将数组最后一个单元弹出(出栈)

array_pop()  弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL 。

<?php
   $stack  = array( "orange" ,  "banana" ,  "apple" ,  "raspberry" );
   $fruit  =  array_pop ( $stack );

   print_r ( $stack );  // Array([0] => orange,[1] => banana,[2] => apple)
?>

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_replace — 使用传递的数组替换第一个数组的元素 

array_replace()  函数使用后面数组元素的值替换第一个 array 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。 

<?php
    $base  = array( "orange" ,  "banana" ,  "apple" ,  "raspberry" );
     $replacements  = array( 0  =>  "pineapple" ,  4  =>  "cherry" );
     $replacements2  = array( 0  =>  "grape" );

     $basket  =  array_replace ( $base ,  $replacements ,  $replacements2 );
     print_r ( $basket ); // Array([0] => grape,[1] => banana,[2] => apple,[3] => raspberry,[4] => cherry)
?>

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()  先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。 

<?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

?>

key — 从关联数组中取得键名

key()  函数返回数组中内部指针指向的当前单元的键名。但它不会移动指针。如果内部指针超过了元素列表尾部,或者数组是空的,key() 会返回 NULL 。

<?php
    $array  = array(
      'fruit1'  =>  'apple' ,
      'fruit2'  =>  'orange' 
    );
    while ( $fruit_name  =  current ( $array )) {//current() 函数返回数组中的当前元素的值。
      if ( $fruit_name  ==  'apple' ) {
         echo  key ( $array ). '<br />' ;
      }
     next ( $array );  // fruit1
   }
?>

current() 函数返回数组中的当前元素的值。

每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。

提示:该函数不会移动数组内部指针。

相关的方法:

  • end() - 将内部指针指向数组中的最后一个元素,并输出。
  • next() - 将内部指针指向数组中的下一个元素,并输出。
  • prev() - 将内部指针指向数组中的上一个元素,并输出。
  • reset() - 将内部指针指向数组中的第一个元素,并输出。
  • each() - 返回当前元素的键名和键值,并将内部指针向前移动。
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br>"; // The current element is Peter
echo next($people) . "<br>"; // The next element of Peter is Joe
echo current($people) . "<br>"; // Now the current element is Joe
echo prev($people) . "<br>"; // The previous element of Joe is Peter
echo end($people) . "<br>"; // The last element is Cleveland
echo prev($people) . "<br>"; // The previous element of Cleveland is Glenn
echo current($people) . "<br>"; // Now the current element is Glenn
echo reset($people) . "<br>"; // Moves the internal pointer to the first element of the array, which is Peter
echo next($people) . "<br>"; // The next element of Peter is Joe

print_r (each($people)); // Returns the key and value of the current element (now Joe), and moves the internal pointer forward
?>

 

krsort — 对数组按照键名逆向排序

对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。成功时返回 TRUE ,或者在失败时返回 FALSE 。

<?php
    $fruits  = array( "d" => "lemon" ,  "a" => "orange" ,  "b" => "banana" ,  "c" => "apple" );
     krsort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
        echo  " $key  =  $val " ;  // d = lemon,c = apple,b = banana,a = orange
    }
?>

ksort — 对数组按照键名排序 

对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。成功时返回 TRUE ,或者在失败时返回 FALSE 。

<?php
    $fruits  = array( "d" => "lemon" ,  "a" => "orange" ,  "b" => "banana" ,  "c" => "apple" );
     ksort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
        echo  " $key  =  $val" ;  // a = orange,b = banana,c = apple,d = lemon
    }
?>

rsort — 对数组逆向排序

rsort对数组进行逆向排序(最高到最低)。成功时返回 TRUE ,或者在失败时返回 FALSE 。

<?php
    $fruits  = array( "lemon" ,  "orange" ,  "banana" ,  "apple" );
     rsort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
        echo  " $key  =  $val " ; //  0 = orange,1 = lemon,2 = banana,3 = apple  $fruits 被按照字母顺序逆向排序。
    }
?>

sort — 对数组排序,从最低到最高重新安排。

<?php
    $fruits  = array( "lemon" ,  "orange" ,  "banana" ,  "apple" );
    sort ( $fruits );
    foreach ( $fruits  as  $key  =>  $val ) {
    echo  "fruits["  .  $key  .  "] = "  .  $val; 
    
    以上例程会输出:
        fruits[0] = apple
        fruits[1] = banana
        fruits[2] = lemon
        fruits[3] = orange 
    }
?>

natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序

natcasesort()  是 natsort()  函数的不区分大小写字母的版本。

本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键/值的关联,这被称为“自然排序”。

<?php
     $array1  =  $array2  = array( 'IMG0.png' ,  'img12.png' ,  'img10.png' ,  'img2.png' ,  'img1.png' ,  'IMG3.png' );
     
     natcasesort ( $array2 );
     print_r ( $array2 ); // Array([0] => IMG0.png,[4] => img1.png,[3] => img2.png,[5] => IMG3.png,[2] => img10.png,[1] => img12.png)
?>

natsort — 用“自然排序”算法对数组排序

本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键/值的关联,这被称为“自然排序”。本算法和通常的计算机字符串排序算法(用于 sort() )的区别见下面示例。

<?php
    $array1  =  $array2  = array( "img12.png" ,  "img10.png" ,  "img2.png" ,  "img1.png" );
    natsort ( $array2 );

    print_r ( $array2 ); 
    以上例程会输出:
        Array(
            [3] => img1.png
            [2] => img2.png
            [1] => img10.png
            [0] => img12.png
        )
 ?>

 

shuffle — 将数组打乱,本函数打乱(随机排列单元的顺序)一个数组。

PHP array 是允许对数组操作的函数。PHP 支持单维和多维的数组。同时提供了用数据库查询结果来构造数组的函数。

 

出处:小张个人博客

网址:http://www.023xs.cn/

 

参考链接:https://blog.csdn.net/ouyangxiaoguai/article/details/50340083

参考链接:https://blog.csdn.net/qq_16241043/article/details/53436965

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值