zoukankan      html  css  js  c++  java
  • PHP:第四章——PHP数组查找,替换,过滤,判断相关函数

    <pre>
    <?php
    //查找,替换,过滤,判断相关函数
    header("Content-Type:text/html;charset=utf-8");
    /*知识点一:is_array - 判断一个变量是否是数组
    原形:bool is_array ( mixed $var )
    功能:判断一个变量是否是数组,如果是返回true,否则返回 false*/
    //例:
    /*$a=array(2,4,6);
    var_dump(is_array($a));//输出:true*/
    
    /*知识点二:array_key_exists   检查给定的键名或索引是否存在于数组中
    原形:bool array_key_exists ( mixed $key , array $search )
    功能: array_key_exists() 在给定的 key 存在于数组中时返回 TRUE。key 可以是任何能作为数组索引的值。
    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。*/
    //例:
    /*$a=array('zg'=>'中国');
    var_dump(array_key_exists('zg',$a));//输出:true*/
    //key_exists是array_key_exists的别名
    
    /*知识点三:in_array -  检查数组中是否存在某个值(只在数组的一维中查找,不查找之数组元素内容)
    函数原形:bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
    在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。 
    如果strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
    如果找到 needle 则返回 TRUE,否则返回 FALSE。 */
    /*$a = array('dl' => '中国'); 
    var_dump(array_key_exists('dl',$a));    //true*/
    
    /*知识点四:array_search — 在数组中搜索给定的值,如果成功则返回相应的键名 
    原形:mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
    功能:在 haystack 中搜索 needle 参数。 
    参数:如果 needle 是字符串,则比较以区分大小写的方式进行。 
    如果可选的第三个参数 strict 为 TRUE,则 array_search() 将在 haystack 中检查完全相同的元素。 
    返回值:如果找到了 needle 则返回它的键,否则返回 FALSE。 
    如果 needle 在 haystack 中出现不止一次,则返回第一个匹配的键。
    要返回所有匹配值的键,应该用 array_keys() 加上可选参数 search_value 来代替。*/
    /*$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_replace — 使用传递的数组替换第一个数组的元素
    原形:array array_replace ( array $array1 , array $array2 [, array $... ] )
    功能说明:array_replace() 函数使用后面数组元素相同 key 的值替换 array1 数组的值。
    如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。
    如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。
    如果一个键仅存在于第一个数组,它将保持不变。
    如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。 
    返回值:返回一个数组。如果发生错误,将返回 NULL。 */
    
    /*$a = array('d' => '动', 'l' => '美','x' => '学', 'y' => '院'); 
    $b = array('d' => 'PHP','美');
    $c = array_replace($a,$b);    
    print_r($c);        
    //输出:Array ( [d] => PHP [l] => 力 [x] => 学 [y] => 院 [0] => 美 )*/ 
    
    
    /*知识点六:array_replace_recursive — 使用传递的数组递归替换第一个数组的元素
    原形:array array_replace_recursive ( array $array1 , array $array2 [, array $... ] )    
    功能说明:array_replace_recursive() 使用后面数组元素的值替换数组 array1 的值。 
    如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。 
    如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。 
    如果一个键仅存在于第一个数组,它将保持不变。 
    如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。
    array_replace_recursive() 是递归的:它将遍历数组并将相同的处理应用到数组的内部值。 
    返回值:返回一个数组。如果发生错误,将返回 NULL。 
    如果数组 array1 中的值是标量,它的值将被第二个数组 array2 中的值替换,它可能是一个标量或者数组。
    如果 array1 和 array2 中的值都是数组,array_replace_recursive() 函数将递归地替换它们各自的值。*/ 
    
    /*$a = array('dl'=>array('动','力'), 'xy'=>array('学','院'));
    $b = array('dl' => array('PHP'), 'xy' => array('高级班'));
    $c = array_replace_recursive($a,$b); 
    print_r($c); */
    //输出:Array ( [dl] => Array ( [0] => PHP [1] => 力 ) [xy] => Array ( [0] => 高级班 [1] => 院 ) )
    
    /*知识点七:array_filter — 用回调函数过滤数组中的单元
    原形:array array_filter ( array $input [, callable $callback = "" ] )
    依次将 input 数组中的每个值传递到 callback 函数。
    如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。
    数组的键名保留不变。如果没有提供 callback 函数, 将删除 input 中所有等值为 FALSE 的条目。
    代码示例:输出0-9之间的偶数*/
    //$a = range(0,9);
    //$c = array_filter($a,'F'); 
    //print_r($c); //输出数组:0,2,4,6,8
    //function F($p){
    //    if(($p & 1) == 0)
    //    return 1;
    //}
    
    /*知识点八:array_walk - 使用用户自定义函数对数组中的每个元素做回调处理
    原形:bool array_walk ( array &$array , callable $funcname [, mixed $userdata = NULL ] )
    功能:将用户自定义函数 funcname 应用到 array 数组中的每个单元。
    array_walk() 不会受到 array 内部数组指针的影响。
    array_walk() 会遍历整个数组而不管指针的位置。
    参数说明:
    典型情况下 funcname 接受两个参数。array 参数的值作为第一个,键名作为第二个。
    只有 array 的值才可以被改变,用户不应在回调函数中改变该数组本身的结构。
    例如增加/删除单元,unset 单元等等。
    如果 array_walk() 作用的数组改变了,则此函数的的行为未经定义,且不可预期。
    如果提供了可选参数 userdata,将被作为第三个参数传递给 callback funcname。
    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。*/
    
    /*$b = array();
    $a = array('d' => '中', 'l' => '力','x' => '学', 'y' => '院'); 
    array_walk($a,'F','DL_');
    function F($p1, $p2, $p3){  //$p1是数组的值,$p2数组的键。$p3是要追加的内容。
        global $b;
        $b[] = $p3.$p1;
    }
    print_r($b);*/
    //结果:Array ( [0] => DL_中 [1] => DL_力 [2] => DL_学 [3] => DL_院 )
    
    
    /*知识点九:array_walk_recursive — 对数组中的每个成员递归地应用用户函数
    原形:bool array_walk_recursive ( array &$input , callable $funcname [, mixed $userdata = NULL ] ) 
    将用户自定义函数 funcname 应用到 array 数组中的每个单元。本函数会递归到更深层的数组中去。
    参数说明: 
    典型情况下 funcname 接受两个参数。input 参数的值作为第一个,键名作为第二个。
    如果提供了可选参数 userdata,将被作为第三个参数传递给 callback funcname。
    成功时返回 TRUE, 或者在失败时返回 FALSE。*/
    /*$dl = array('d' => '美', 'l' => '力');
    $a = array('dl'=>$dl, 'x' => '学', 'y' => '院'); 
    function test_print($item, $key){
        echo "$key : $item
    ";
    }
    array_walk_recursive($a, 'test_print');*/
    /*
    输出:
    d : 美
    l : 力
    x : 学
    y : 院
    */
    
    /*知识点十:array_map — 将回调函数作用到给定数组的单元上
    原形:array array_map ( callable $callback , array $arr1 [, array $... ] )
    功能:array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。
    参数:callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    */
    //例:
    /*$a = array('d' => '中', 'l' => '力','x' => '学', 'y' => '院'); 
    $b = array_map('F',$a);
    function F($p1){             
        return $p1."_DL";
    }
    print_r($b);
    //结果: Array ( [d] => 中_DL [l] => 力_DL [x] => 学_DL [y] => 院_DL )
    */
    
    //例:
    /*$a = array('php','js','mysql','html',"css"); 
    $b = array('9999元','3680元','9999元','688元','888元');
    array_map('F',$a,$b);
    function F($p1,$p2){    
        echo $p1."培训学费是".$p2 ,"<br>";
    }    */ 
    /*
    输出:
    php培训学费是9999元
    js培训学费是3680元
    mysql培训学费是9999元
    html培训学费是688元
    css培训学费是888元
    */
    //例:
    $a = array('php','js','mysql','html',"css"); 
    $b = array('9999元','3680元','9999元','688元','888元');
    $c =  array_map(null,$a,$b);    //把两个数组合并成数据库读取出的结构形式
    $d = array_column($c,0);        //提取数据库中某一列数据
    print_r($c);    
    print_r($d); 
    /*
    输出;
    Array
    (
        [0] => Array
            (
                [0] => php
                [1] => 9999元
            )
    
        [1] => Array
            (
                [0] => js
                [1] => 3680元
            )
    
        [2] => Array
            (
                [0] => mysql
                [1] => 9999元
            )
    
        [3] => Array
            (
                [0] => html
                [1] => 688元
            )
    
        [4] => Array
            (
                [0] => css
                [1] => 888元
            )
    
    )
    Array
    (
        [0] => php
        [1] => js
        [2] => mysql
        [3] => html
        [4] => css
    )
    
    
    */
    
    ?>
  • 相关阅读:
    web版仿微信聊天界面|h5仿微信电脑端案例开发
    h5仿微信聊天(高仿版)、微信聊天表情|对话框|编辑器
    原生wcPop.js消息提示框(移动端)、内含仿微信弹窗效果
    旅行app(游记、攻略、私人定制) | 顺便游旅行H5移动端实例
    【h5+c3】web前端实战项目、快装webapp手机案例源码
    h5区块链项目实战
    css3波纹特效、H5实现动态波浪
    H5移动端项目案例、web手机微商城实战开发
    HTML5仿微信聊天界面、微信朋友圈实例
    Android 给服务器发送网络请求
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/7148737.html
Copyright © 2011-2022 走看看