zoukankan      html  css  js  c++  java
  • 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
     
     
     
  • 相关阅读:
    hdu 2222 Keywords Search
    Meet and Greet
    hdu 4673
    hdu 4768
    hdu 4747 Mex
    uva 1513 Movie collection
    uva 12299 RMQ with Shifts
    uva 11732 strcmp() Anyone?
    uva 1401
    hdu 1251 统计难题
  • 原文地址:https://www.cnblogs.com/fx2008/p/2984069.html
Copyright © 2011-2022 走看看