• PHP中array


    php如何比较两个数组是否相等???

    有两个数组
    $a = array('aaa','bbb','ddd','aaa');
    $b = array('aaa','ddd','aaa','bbb');
    如何比较这两个数组是否相等,前提是不能使用sort()之类的内置函数进行排序。
    如果一定要使用内置函数,哪一个排序函数速度最快???

    ++++++++++++++++++++++++++++++++++++++++++++++

    $a = array('aaa','bbb','ddd','aaa'); $b = array('aaa','ddd','aaa','bbb');
    $c = array_diff($a, $b);
    print_r($c);//输出array()
    $a = array('aaa1','bbb','ddd','aaa'); $b = array('aaa','ddd','aaa','bbb');
    $c = array_diff($a, $b);
    print_r($c);//输出array('aaa1')
    ++++++++++++++++++++++++++++++++++++++++++++++
    至于两个数组相同,不清楚怎么说的,是键值相同,还是键值与键名都相同? 如果单纯地比较键值,用1楼的就行了。。   
    ++++++++++++++++++++++++++++++++++++++++++++++
    array_diff 可行,如果返回的是空数组即说明,2个数组相同!   

    array->xml http://www.cnblogs.com/andybegin/archive/2012/03/30/2425864.html

    <?php function array2xml($array, $tag) {
        function ia2xml($array) {         $xml="";         foreach ($array as $key=>$value) {             if (is_array($value)) {                 $xml.="<$key>".ia2xml($value)."</$key>";             } else {                 $xml.="<$key>".$value."</$key>";             }         }         return $xml;     }
        return simplexml_load_string("<$tag>".ia2xml($array)."</$tag>"); }
    $test['type']='lunch'; $test['time']='12:30'; $test['menu']=array('entree'=>'salad', 'maincourse'=>'steak');
    echo array2xml($test,"meal")->asXML(); ?>

    xml->array

    method1:

    function xml2phpArray($xml,$arr){         $iter = 0;         foreach($xml->children() as $b){             $a = $b->getName();             if(!$b->children()){                 $arr[$a] = trim($b[0]);             }else{                 $arr[$a][$iter] = array();                 $arr[$a][$iter] = xml2phpArray($b,$arr[$a][$iter]);                 $iter++;             }         }         return $arr;     }

    $xml = <<<XML <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> <a><c>ccc</c><e>eee</e></a> </note> XML;
    print_r(xml2phpArray(simplexml_load_string ( $xml ),array()));

    method2:

    function XML2Array ( $xml , $recursive = false ) {     if ( ! $recursive )     {         $array = simplexml_load_string ( $xml ) ;     }     else     {         $array = $xml ;     }         $newArray = array () ;     $array = ( array ) $array ;     foreach ( $array as $key => $value )     {         $value = ( array ) $value ;         if ( isset ( $value [ 0 ] ) )         {             $newArray [ $key ] = trim ( $value [ 0 ] ) ;         }         else         {             $newArray [ $key ] = XML2Array ( $value , true ) ;         }     }     return $newArray ; }

    PHP数组排序函数合集

     

    1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型。 2 函数名中出现单a表示association,含义为,在按值排序的过程中,保持key=>value的对应关系不变 3 函数名中出现单k表示key,含义为,在按值排序的过程中按照数组key而不是数组的值排序 4 函数名中出现单r的表示reverse,含义为,按照跟不加r的相反的顺序排列 5 函数名中出现单u的表示user-defined,含义为,使用用户自定义函数排序,如果函数的逻辑是参数1<参数2返回负数,则按照升序排列(p1小2返负升)。

    boolsort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

    <?php
    $fruits = array("lemon", "orange", "banana", "apple");
    sort($fruits);
    var_dump($fruits);
    ?>

    结果:array(4) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(5) "lemon" [3]=> string(6) "orange" }

    --------------------rsort降序排列-------------------- <?php $fruits = array("lemon", "orange", "banana", "apple"); rsort($fruits); var_dump($fruits); ?>

     结果:array(4) { [0]=> string(6) "orange" [1]=> string(5) "lemon" [2]=> string(6) "banana" [3]=> string(5) "apple" }

    ---------------asort按照二维数组值的升序排列(保持key=>value的关联关系)----------- <?php $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); asort($fruits); var_dump($fruits); ?> 结果:array(4) { ["c"]=> string(5) "apple" ["b"]=> string(6) "banana" ["d"]=> string(5) "lemon" ["a"]=> string(6) "orange" }
    --------------arsort按照二维数组值的降序排列(保持key=>value的关联关系)-------------- <?php $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); arsort($fruits); var_dump($fruits); ?> 结果:array(4) { ["a"]=> string(6) "orange" ["d"]=> string(5) "lemon" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" }
    -----------------ksort按照数组的key升序排列-------------- <?php $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); ksort($fruits); var_dump($fruits); ?>
    结果:array(4) { ["a"]=> string(6) "orange" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" ["d"]=> string(5) "lemon" }
    ---------------------krsort按照数组key的降序排列-------------------------------- <?php $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); krsort($fruits); var_dump($fruits); ?> 结果:array(4) { ["d"]=> string(5) "lemon" ["c"]=> string(5) "apple" ["b"]=> string(6) "banana" ["a"]=> string(6) "orange" }
    ----------------usort函数按照用户自定义的函数排序---------------- <?php function cmp($a, $b) { if ($a == $b) { return 0;} return ($a < $b) ? -1 : 1; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); var_dump($a); ?> 结果:array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(5) [4]=> int(6) }
    -----------------uksort使用自定义函数按照数组的key排序----------------- <?php function cmp($a, $b) {     $a = preg_replace('@^(a|an|the) @', '', $a);     $b = preg_replace('@^(a|an|the) @', '', $b);     return strcasecmp($a, $b); } $a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4); uksort($a, "cmp"); var_dump($a); ?> 结果:array(4) { ["an apple"]=> int(3) ["a banana"]=> int(4) ["the Earth"]=> int(2) ["John"]=> int(1) }
    -------------------uasort将数组用自定义函数按照value排序,保持索引关系不变--------- <?php function cmp($a, $b) {     if ($a == $b) { return 0;}     return ($a < $b) ? -1 : 1; } $array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4); var_dump($array); uasort($array, 'cmp'); var_dump($array); ?> 结果:array(8) { ["d"]=> int(-9) ["h"]=> int(-4) ["c"]=> int(-1) ["e"]=> int(2) ["g"]=> int(3) ["a"]=> int(4) ["f"]=> int(5) ["b"]=> int(8) } 
    -------------------array_multisort排序多个数组或多维数组--------- <?php $ar = array(        array("10",11,100,100,"a"),        array(1,2,"2",3,1)       );    array_multisort($ar[0], SORT_ASC, SORT_STRING,$ar[1], SORT_NUMERIC, SORT_DESC); var_dump($ar); ?> 结果:array(2) { [0]=> array(5) { [0]=> string(2) "10" [1]=> int(100) [2]=> int(100) [3]=> int(11) [4]=> string(1) "a" } [1]=> array(5) { [0]=> int(1) [1]=> int(3) [2]=> string(1) "2" [3]=> int(2) [4]=> int(1) } }
    //说明: 1 上例中:$ar数组优先按照$ar[0]的字符串值升序排列,如果字符串值相等,再按照$ar[1]数组的数字值降序排列。 2 array_multisort函数的任意一个位置的参数如果是数组,表示排序时用的值, 如果有多个数组参数,优先按照前边的数组值进行排序,如果是常量,例如 SORT_ASC, SORT_DESC, SORT_REGULAR,SORT_NUMERIC, SORT_STRING. 表示排序方法(数组取值前优先)。

    PHP二维数组排序函数 PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义。 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义:

    function array_sort($arr,$keys,$type='asc'){
        $keysvalue = $new_array = array();
        foreach ($arr as $k=>$v){
            $keysvalue[$k] = $v[$keys];
        }
        if($type == 'asc'){
            asort($keysvalue);
        }else{
            arsort($keysvalue);
        }
        reset($keysvalue);
        foreach ($keysvalue as $k=>$v){
            $new_array[$k] = $arr[$k];
        }
        return $new_array;
    }  

    $array = array( array('name'=>'手机','brand'=>'诺基亚','price'=>1050), array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300), array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100), array('name'=>'跑步机','brand'=>'三和松石','price'=>4900), array('name'=>'手表','brand'=>'卡西欧','price'=>960), array('name'=>'液晶电视','brand'=>'索尼','price'=>6299), array('name'=>'激光打印机','brand'=>'惠普','price'=>1200) ); $ShoppingList = array_sort($array,'price'); print_r($ShoppingList);

    $xml = <<<XML <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> <a><b><c>ccc</c></b><e>eee</e></a> </note> XML;
    print_r(XML2Array($xml));

    json->array

    json_decode($json,true);//第二个参数为true时 即为array

    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    var_dump(json_decode($json)); var_dump(json_decode($json, true));

    array->json

    json_encode 数组-》json

    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
    echo
    json_encode($arr);

    PHP常用函数之数组篇

     

    ,1.array_filter(array input,callback callback)

    作用:通过过滤函数过滤数组元素

    返回值:array

    注意:callback函数要带有参数,数组input的每个元素将会通过callback函数进行过滤。

    2.array_intersect(array arr1,array arr2[,array arrn])

    作用:以arr1为准,计算数组交集。

    返回值:array。该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。

    注意:键名保留不变。

    3.array_merge(array $array1 [, array $array2 [, array $... ]])

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

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

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

    返回值:array

    4.array_pop ( array &$array )

    作用:弹出array的最后一个元素,并将长度减1,如果 array 为空(或者不是数组)将返回 NULL

    返回值:被弹出的值。。

    5.array_push(array &$array , mixed $var [, mixed $... ])

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

    返回值:array

    6.array_rand(array $input [, int $num_req ])

    作用:在你想从数组中取出一个或多个随机的单元时相当有用。它接受 input 作为输入数组和一个可选的参数 num_req ,指明了你想取出多少个单元 - 如果没有指定,默认为 1。

    如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。

    7. array_shift(array &$array)

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

    8.array_sum(array $array)

    作用:将数组中的所有值的和以整数或浮点数的结果返回。

    9.in_array(mixed $needle , array $haystack [, bool $strict ])

    作用:检查数组中是否存在某个值。在 haystack 中搜索 needle ,如果找到则返回 TRUE,否则返回 FALSE

    10.range(mixed $low , mixed $high [, number $step ])

    作用:返回数组中从 lowhigh 的单元,包括它们本身。如果 low > high,则序列将从 high 到 low。如果给出了 step 的值,它将被作为单元之间的步进值。step 应该为正值。如果未指定,step 则默认为 1。

    11.shuffle(array &$array)

    作用:本函数打乱(随机排列单元的顺序)一个数组。

    12.unique(array $array)

    作用:删除数组中重复的值。并返回没有重复的新数组。

    <?php

    /* 本地缓存文件名称 */
    $tempfile = "sms.php";
    $smsdata = array();
    $getTime = 3 ;


    /**
    * 文件是否需要读取远程
    *
    * @return boolean 获取远程数据文件
    */
    function getFileReader() {
       
       
    /* 引入全局变量 */
        global $tempfile,$smsdata,$getTime;   
       
       
    try {
           
           
    if( time() - filemtime($tempfile) < $getTime ) {
               
    /* 本地 */
                $smsdata = include $tempfile;
               
            }
    else {
               
    /* 远程 */
                if( getHttpFileGyArray() === false ) $smsdata = include $tempfile;
            }
           
           
        }
    catch (FtpException $e) {
           
    /* 远程 */
            if( getHttpFileGyArray() === false ) $smsdata = array();   
        }
    }


    /**
    * 获取HTTP请求远程数据文件
    *
    * @param string $url 地址
    *
    * @return boolean/array 获取远程数据文件
    */
    function getHttpFileGyArray( $url ) {
       
       
    /* 引入全局变量 */
        global $tempfile,$smsdata;
       
       
    try {

           
    /* 读取数据 */
            $text = @file_get_contents($url);
           
    $text = explode('@',$text);
           
           
    /* 生成PHP数组内容 */
            foreach( $text as $key => $row ) {
               
    $at = explode('|',$row);       
               
    $smsdata[$at[0]]['dx'] = $at[1];
            }
           
           
    /* 缓存到本地 */
            $content  = "<?php\n\n return ".var_export($smsdatatrue).";\n";   
           
    file_put_contents($tempfile, $content);
           
        }
    catch (FtpException $e) {
           
    $smsdata = array();
           
    return false;
        }
       
    return true;
    }


    getFileReader();
    print_r($smsdata);
     
    ?>

    php函数有很多,需要时查询api。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
    /*
      #数组 没有限制大小:$arr[0]=1;$arr[1]=2; $arr=array("0","1");$list($num1,$num2)=$arr;
       array range(int low,int high[,int step])
             low最小数,high最高数,step步长
       int array_unshift(array array,mixed vari) 数组前面插入
       array_push 数组尾添加
       array_shift  数组头部删除
       array_pop    数组尾部删除
      #定位数组
       boolean in_array(mixed needle,array haystack,[,boolean strict])
       boolean array_key_exists(mixed key,array array) 搜索关键键
       array_search() 搜索关联数组值
       array_keys()返回数组,包含所搜索的的所有键
       array_values()返回数组所有值。
      #遍历数组
       mixed key(array array)
       current(array array) 获取当前数组值
       array each(array array) 返回当前键、值对
       next(array array) 指向下一个
       prev(array array) 移到前一个
       reset(array array)移到第一个
       end(array array)移到最后一个
      #向函数传递数组值
       boolean array_walk(array &array,callback function,[,mixed userdata])
      #确定数组的大小及唯一性
       integer count(array array[,int mode]) 类似sizeof()
       array array_count_values(array array) 分组统计每个值出现的次数
       array_unique() 删除重复值,保持唯一性
      #排序
       array_reverse()顺序逆置
       array_flip()   对换键与值
       void sort(array array[,int sort_flags])
            sort_flgs{[SORT_NUMBERIC数值排序],[SORT_REGULAR 按ASCII排序],[SORT_STRING]}
       asort()升序
       rsort()逆序
       arsort()逆序
       natsort()自然排序
       natcasesort()不区分大小写自然排序
       ksort()键值排序
       krsort()逆序键值排序
       void usort(array array,callback function name) 用户自定义排序
    #合并,拆分,结合,分解数组
       array_merge_recursive() 合并
       array_merge_combine() 追加
       array_merge()连接到新数组
       array_slice(array array,int offse[,int length]) 拆分
       array_intersect()、array_intersect_assoc()数组交集
       array_diff()、array_diff_assoc()差集
       array_rand()、shuffle()随机数组
       array_sum()求和
       array_chunk 分成多维数组
    */
    //创建0-20的偶数数组,2为步长
    $even=range(0,20,2);
    //打印数组
    print_r($even);
    //判断是否为数组
    printf("this number is an array:%s<br/>",(is_array($even)?"true":"false"));
    echo "<br>";
    //数组头部添加子项,并打印
    array_unshift($even,522,54);
    print_r($even);
    //定义一变量,然后在数组中搜索,存在时显示找到该变量。
    $sa=522;
      if(in_array($sa,$even)){
           echo "find it $sa";
    };
    echo "<br/>";
    //搜索数组关键键
    if(array_key_exists(4,$even)){
           echo $even[4]." exists.";
    }
    echo "<br/>";
    print_r(array_values($even));
    //遍历打印数组
    while($key=key($even)){
          echo "<br/>".$key;
          next($even);
    }
    //统计数组大小
    echo "<br/>";
    echo count($even);
    //排序
    echo "<br>";
    sort($even);
    print_r($even);
    ?>

    这篇文章将介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率。

    1、添加数组元素

    PHP是一种弱类型语言,这意味着你不需要显示声明一个数组及其大小,相反,你可以同时声明并填充数组。

    1. $capitals = array
    2.   'Alabama' => 'Montgomery', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Arizona' => 'Phoenix' 
    5. );

    额外的数组元素可以象下面这样追加:

    1. $capitals['Arkansas'] = 'Little Rock';

    如果你正在处理数字索引数组,你可能想使用显示命名的函数前置和追加元素,如array_push()和array_unshift()函数,但这些函数不能操作关联数组。

    2、删除数组元素

    如果要从数组中删除一个元素,请使用unset()函数,如:

    1. unset($capitals['California']);

    使用数字索引数组时,删除数组元素的办法更多,更灵活,可以使用array_shift()和array_pop()函数分别从数组的开头和末尾删除一个元素。

    3、交换键和值

    假设你想创建一个名叫$states的新数组,使用州府作为索引,使用州名作为关联值,使用array_flip()函数很容易完成这个任务。

    1. $capitals = array
    2.   'Alabama' => 'Montgomery', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Arizona' => 'Phoenix' 
    5. ); 
    6. $states = array_flip($capitals); 
    7. // $states = array
    8. //  'Montgomery' => string 'Alabama', 
    9. //  'Juneau'     => string 'Alaska', 
    10. //  'Phoenix'    => string 'Arizona' 
    11. // );

    4、合并数组

    假设前面的数组由一个基于Web的“FlashCard”服务使用,你想提供一种方法测试学生对美国各州首府的掌握情况,你可以使用array_merge()函数合并包含州和首府的数组。

    1. $stateCapitals = array
    2.   'Alabama' => 'Montgomery', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Arizona' => 'Phoenix' 
    5. ); 
    6. $countryCapitals = array
    7.   'Australia' => 'Canberra', 
    8.   'Austria'   => 'Vienna', 
    9.   'Algeria'   => 'Algiers' 
    10. ); 
    11. $capitals = array_merge($stateCapitals, $countryCapitals);

    5、编辑数组值

    假设在数组中的数据包含大小写错误,在插入到数据库之前,你想纠正这些错误,你可以使用array_map()函数给每个数组元素应用一个回调。

    1. function capitalize($element) 
    2.   $element = strtolower($element); 
    3.   return ucwords($element); 
    4. $capitals = array
    5.   'Alabama' => 'montGoMEry', 
    6.   'Alaska'  => 'Juneau', 
    7.   'Arizona' => 'phoeniX' 
    8. ); 
    9. $capitals = array_map("capitalize", $capitals);

    6、按键对数组排序

    FlashCard程序常常使用各种排序,如按字母顺序排序,你可以使用ksort()函数按键对关联数组进行排序。

    1. $capitals = array
    2.   'Arizona' => 'Phoenix', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Alabama' => 'Montgomery' 
    5. ); 
    6. ksort($capitals);

    因为数组是通过参数传递给ksort()函数的,意味着你不再需要将排序结果分配给另一个变量。

    7、随机数组排序

    在FlashCard程序中还涉及到另一种随机排序技术,这时你要使用shuffle()函数实现数组项目的随机排序。

    1. $capitals = array
    2.   'Arizona' => 'Phoenix', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Alabama' => 'Montgomery' 
    5. ); 
    6. shuffle($capitals);

    如果不需要打乱数组顺序,你只是想随机选择一个值,那么使用array_rand()函数即可。

    8、确定键和值是否存在

    你可以使用in_array()函数确定一个数组元素是否存在。

    1. $capitals = array
    2.   'Arizona' => 'Phoenix', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Alabama' => 'Montgomery' 
    5. ); 
    6. if (in_array("Juneau", $capitals)) 
    7.   echo "Exists!"; 
    8. } else { 
    9.   echo "Does not exist!"; 
    10. }

    很少有人知道这个函数也可以确定一个数组键是否存在,在这一点上,它和array_key_exists()函数的功能一样。

    1. $capitals = array
    2.   'Arizona' => 'Phoenix', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Alabama' => 'Montgomery' 
    5. ); 
    6. if (array_key_exists("Alaska", $capitals)) 
    7.   echo "Key exists!"; 
    8. } else { 
    9.   echo "Key does not exist!"; 
    10. }

    9、搜索数组

    你可能想搜索数组资源,这样用户就可以方便地用一个特定的州府检索关联的州,可以通过array_search()函数实现数组搜索。

    1. $capitals = array
    2.   'Arizona' => 'Phoenix', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Alabama' => 'Montgomery' 
    5. ); 
    6. $state = array_search('Juneau', $capitals); 
    7. // $state = 'Alaska'

    10、标准PHP库

    标准PHP库(Standard PHP Library,SPL)为开发人员提供了许多数据结构,迭代器,接口,异常和其它以前PHP语言没有的功能,使用这些功能可以通过面向对象的语法遍历数组。

    1. $capitals = array
    2.   'Arizona' => 'Phoenix', 
    3.   'Alaska'  => 'Juneau', 
    4.   'Alabama' => 'Montgomery' 
    5. ); 
    6. $arrayObject = new ArrayObject($capitals); 
    7. foreach ($arrayObject as $state => $capital) 
    8.   printf("The capital of %s is %s<br/>", $state, $capital); 
    9. // The capital of Arizona is Phoenix 
    10. // The capital of Alaska is Juneau 
    11. // The capital of Alabama is Montgomery

    这仅仅是SPL众多伟大功能中的一个,一定要阅读PHP文档了解更多信息。

    php去除数组中指定元素

     

    方法一:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    // 去除数组中指定的元素
    $arr = array(
        array('id' => 1, 'name' => 'lili'),
        array('id' => 2, 'name' => 'abo'),
        array('id' => 3, 'name' => 'wewe'),
    );
     
    function filt($var) {
        if ($var['name'] != 'abo') {
            // callback 函数返回true,则 input数组的当前值会被包含在返回的结果数组中。
            // 数组的键名保留不变
            return true;
        }
       
    }
    $arr1 = array_filter($arr, 'filt');
    print_r($arr);
    print_r($arr1);

    方法二:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $arr = array(
        array('id' => 1, 'name' => 'lili'),
        array('id' => 2, 'name' => 'abo'),
        array('id' => 3, 'name' => 'wewe'),
    );
     
    print_r($arr);
    foreach ($arr as $key => $value) {
        if ($value['name'] == 'abo') {
            unset($arr[$key]);
        }
    }
    print_r($arr);

    定义数组

      数组array是一组有序的变量,其中每个变量被叫做一个元素。

    一、定义数组   可以用 array() 语言结构来新建一个数组。它接受一定数量用逗号分隔的 key => value 参数对。 array( [key =>] value , ... ) // key 可以是 数字 或者 字符串 // value 可以是任何值 例子1:

    复制代码
    <?php $phpjc=array( 0=>'word',3=>'excel','outlook','access'); print_r($phpjc); ?>
    复制代码

    输出结果如下 :

    Array ( [0] => word [3] => excel [4] => outlook [5] => access )

      例子1定义了一个数组,名字叫phpjc,第一个元素的值是:word,(说明:数组是从0开始计数的),第二个元素为空,第三个元素是:excel,后面自动生成第四和第五个元素   可以通过给变量赋予一个没有参数的array()来创建空数组,然后可以通过使用方括号[]语法来添加值。(注:另外也可用array_push()函数向数组中添加值!!!) 例子2:

    复制代码
    <?php $phpjc=array(); $phpjc[] ="one"; $phpjc[] ="two"; echo$phpjc[0]."<br>"; echo$phpjc[1]; ?>
    复制代码

    输出结果如下 :

    one two

    二、读取数组元素   使用字符串索引(或键)来访问储在数组中的值   例子3:

    <?php $phpjc=array("first"=>1,"second"=>2,"third"=>3); echo$phpjc["second"]; $phpjc["third"]=5; //把第三个元素的值由“3”修改为“5” echo$phpjc["third"]; ?>

      PHP中有很多数组相关的函数,一一用实例说明了is_array()、n_array()、count()、array_push()、array_unshift()、array_merge()、array_pop()、array_shift()、sort()

    1.is_array()函数

      是否为数组 ----------------------------------------------------------- 2.in_array()函数   如果你有很大的一个数组,而所要完成的仅是找出一个存在的给定值,你可以使用in_array()以返回true 或 false。如下代码将输出“Not found in this array”——因为你将在$namesArray中寻找一个并不存在的“Alber ”。

    复制代码
    代码
    <?php   $namesArray=array("Joe","Jane","Bob","Mary","Paul","Eddie","John");   $lookingFor="Albert";   if (in_array($lookingFor,$namesArray)) {     echo"You've found it!";   } else {     echo"Not found in this array!";   } ?>
    复制代码

    -----------------------------------------------------------

    3.count()函数   如果你改变了$lookingFor的值,将其变为“Mary”,你将得到消息“You've found it!”——因为“Mary”是$namesArray的一部分。 如果希望对数组元素计数,你可以使用count()函数:

    <?php  $namesArray=array("Joe","Jane","Bob","Mary","Paul","Eddie","John");   $count=count($namesArray); ?>

    $count值将为7。 -----------------------------------------------------------

    4.array_push()函数   你可以对任何数组添加元素,无论是在已存在数组的开始或末尾。你也可以使用函数以创建一个包含两个或多个数组元素的新数组。合并时每个数组将按需要的顺序排列。如果你的数组已经有内部的排序,你需要对新的合并数组重排序。让我们从对已存在数组的末尾增添元素开始,使用函数array_push():

    复制代码
    代码
    <?php    /* 创建原始数组 */  $fruitArray=array("apple","orange","banana","kiwi","pear");   /* 加入到原始数组中 */  array_push($fruitArray,"grape","pineapple","tomato");   /* 通过其键值列出每个元素*/  while (list($key,$value) =each($fruitArray)) {     echo"$key : $value<br>";   } ?>
    复制代码

    这将显示:

    复制代码
    0: apple 1: orange 2: banana 3: kiwi 4: pear 5: grape 6: pineapple 7: tomato
    复制代码

    ----------------------------------------------------------- 5.array_unshift()函数 当你需要对数组开头添加元素时,代码非常类似。不同处只是函数名:array_unshift() 而不是array_push()。

    复制代码
    代码
    <?php   /* 创建原始数组 */  $fruitArray=array("apple","orange","banana","kiwi","pear");   /* 加入到原始数组中 */  array_unshift($fruitArray,"grape","pineapple","tomato");   /* 通过其键值列出每个元素*/  while (list($key,$value) =each($fruitArray)) {     echo"$key : $value<br>";   } ?>
    复制代码

    这将显示:

    复制代码
    0: grape 1: pineapple 2: tomato 3: apple 4: orange 5: banana 6: kiwi 7: pear
    复制代码

    ----------------------------------------------------------- 6.array_merge()函数 函数array_merge()合并两个或更多的数组。

    复制代码
    代码
    <?php   /* 创建原始数组 */  $fruitArray=array("apple","orange","banana","kiwi","pear");   /* 创建第二个数组 */  $vegArray=array("carrot","green beans","asparagus","artichoke","corn");   /* 合并为一个数组 */  $goodfoodArray=array_merge($fruitArray,$vegArray);   /* 通过其键值列出每个元素*/  while (list($key,$value) =each($goodfoodArray)) {     echo"$key : $value<br>";   } ?>
    复制代码

    这将显示:

    复制代码
    0: apple 1: orange 2: banana 3: kiwi 4: pear 5: carrot 6: green beans 7: asparagus 8: artichoke 9: corn
    复制代码

    现在已经对数组进行了增加元素和合并,现在来练习删除元素函数。你可以使用函数array_pop()从一数组末尾删除一个元素。如果使用函数 array_shift(),则从一数组开头删除一个元素。而实际上当你从数组删除元素时,此元素对你而言仍然可用——当你从已存在的数组中对元素进行 pop 或 shift时。

    -----------------------------------------------------------

    7.array_pop()函数 使用array_pop()函数从数组末尾删除一个值:

    复制代码
    代码
    <?php   /* 创建一数组*/  $fruitArray=array("apple","orange","banana","kiwi","pear");   /* 在末尾弹出某值 */  $popped=array_pop($fruitArray);   /* 列出新数组内容,以及弹出的值*/  while (list($key,$value) =each($fruitArray)) {     echo"$key : $value<br>";   }   echo"<br>and finally, in $popped: $popped"; ?>
    复制代码

    这将显示:

    0: apple 1: orange 2: banana 3: kiwi and finally, in $popped: pear

    ----------------------------------------------------------- 8.array_shift()函数 下面,从数组末尾删除某值:

    复制代码
    代码
    <?php   /* 创建一数组*/  $fruitArray=array("apple","orange","banana","kiwi","pear");   /* 从数组头部移出某值 */  $shifted=array_shift($fruitArray);   /* 列出新数组的内容以及移出的值*/  while (list($key,$value) =each($fruitArray)) {     echo"$key : $value<br>";   }   echo"<br>and finally, in $shifted: $shifted"; ?>
    复制代码

    这将显示:

    0: orange 1: banana 2: kiwi 3: pear and finally, in $shifted: apple

    ----------------------------------------------------------- 9.sort()函数 有很多函数可以帮助你对数组元素排序。但我将会演示基本的排序以帮助你了解其过程:

    复制代码
    代码
    <?php
      /* 创建原始数组 */  $fruitArray=array("apple","orange","banana","kiwi","pear");   /* 排序 */  sort($fruitArray);   /* 对其重设以正确从头到尾显示数组 */  /* 通过其键值列出每个元素*/  while (list($key,$value) =each($fruitArray)) {     echo"$key : $value<br>";   } ?>
    复制代码

    这将显示:

    0: apple 1: banana 2: kiwi 3: orange 4: pear
     
     
     
  • 相关阅读:
    小程序开发系列(五)悬浮搜索框
    LINQ的连接扩展(左连、右连、全连等)
    小程序开发系列(四)九宫格另一种实现
    python 生成随机图片验证码
    django定时任务小插件
    线程池模块thernd
    python logging 模块记录日志
    django Q条件
    jquery 事件绑定
    jQuery示例
  • 原文地址:https://www.cnblogs.com/fx2008/p/2984069.html
Copyright © 2020-2023  润新知