美文网首页PHP
一些有用的php函数

一些有用的php函数

作者: 量U移动广告归因 | 来源:发表于2016-05-18 14:09 被阅读58次

    array_sort 给多维数组排序
    应用场景:有时候有这样的需求 比如有两个选项卡 里面分别存放不同的数据 分别是从不同的数据表里取出来的 然后在这两个选项卡的前面还有一个最新或者热门的选项 这就需要将两者的数据揉合起来 但是又要按照点击率或者时间对其排序 如果数据都是从同一数据表里取出来的 那么就很好办 在取数据的SQL里加一个ORDER BY子句就行了 但是数据来自不同的表该怎么办呢 只要这些数据具有相同的键名 那么就可以利用下面的函数按照那个键名进行排序(这个键名下的键值一定要是数值 不能再是数组或者对象)

    代码原理:将需要按照其排序的那个键的键值单独拿出来 组成一个一维数组 然后对其进行排序 实际上是对原数组的键名进行了排序 然后根据这些已排好序的键名去查找先前的键值 最后返回这个新数组
    /**

    • 按某个键值给二维或者多维数组排序
    • params $arr 待排序的数组
    • params $keys 按照那个键值排序的键名
    • params $type 排序方式 默认为正序
    • params $keep 键名是否重新排序
      /
      function array_sort($arr, $keys, $type ="asc", $keep = true){
      $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) {
      if($keep){
      $new_array[] = $arr[$k];
      } else {
      $new_array[$k] = $arr[$k];
      }
      }
      return $new_array;
      }
      浏览器友好输出
      应用场景:提供比var_dump更详尽更人性化的调试输出信息
      /
    • 浏览器友好的变量输出
    • @param mixed $var 变量
    • @param boolean $echo 是否输出 默认为True 如果为false 则返回输出字符串
    • @param string $label 标签 默认为空
    • @param boolean $strict 是否严谨 默认为true
    • @return void|string
      /
      function dump($var, $echo = true, $label = null, $strict = true)
      {
      $label = ($label === null) ? "" : rtrim($label) . "";
      if (!$strict) {
      if (ini_get("html_errors")) {
      $output = print_r($var, true);
      $output = "<pre>". $label . htmlspecialchars($output, ENT_QUOTES) . "</pre>";
      } else {
      $output = $label . print_r($var, true);
      }
      } else {
      ob_start();
      var_dump($var);
      $output = ob_get_clean();
      if (!extension_loaded("xdebug")) {
      $output = preg_replace("/]=>\n(\s+)/m", "] =>", $output);
      $output ="<pre>" . $label . htmlspecialchars($output, ENT_QUOTES) . "</pre>";
      }
      }
      if ($echo) {
      echo($output);
      return null;
      } else
      return $output;
      }
      计算PHP数组的维度
      应用场景:在某些场合下需要验证数据 判断数组的维度
      /
      *
    • 获取数组的维度
      */
      function arrayLevel($arr){
      $level = array(); //存放各键的维度 最后的维度就是键中维度最大的
      foreach ($arr as $value){
      if(is_array($value)){
      $level[] = arrayLevel($value);
      } else {
      $level[] = 0;
      }
      }
      $level = count($level) > 0 ? $level : array(0);
      $level = max($level); //最后在键的最大维度上加一
      return ++$level;
      }
      对数组进行urlencode转码
      应用场景:在某些接口中,可能会输出中文,如果直接对中文进行json_encode,会把中文转化为\u1234这样的unicode码,如果不想使中文被转换为unicode码,可先对其urlencode 然后 json_encode 再urldecode。但urlencode函数的参数是字符串 所以我们要自定义个函数来处理数组的场景
      function advance_urlencode($arr){
      if(is_array($arr) && count($arr) > 0){
      foreach ($arr as &$v){
      if(is_array($v)){
      $v = advance_urlencode($v);
      } else {
      $v = urlencode($v);
      }
      }
      return $arr;
      } else {
      return ;
      }
      }

    php日期函数
    应用场景:快速获取一些特定的时间
    echo strtotime("-1 day"); //输出前一天的时间
    echo strtotime("-1 month"); //输出一个月前的时间
    //输出今天最早最晚时间
    echo date("Y-m-d 00:00:00")
    echo date("Y-m-d 23:59:59");

    php数组转对象
    应用场景:将数组转化为对象
    function arrayToObject($array) {
    if(!is_array($array)) {
    return $array;
    }
    $object = new stdClass(); //实例化一个空对象
    if (is_array($array) && count($array) > 0) {
    foreach ($array as $name=>$value) {
    $name = strtolower(trim($name));
    if (!empty($name)) {
    $object->$name = arrayToObject($value);
    }
    }
    return $object;
    }
    else {
    return FALSE;
    }
    }

    相关文章

      网友评论

        本文标题:一些有用的php函数

        本文链接:https://www.haomeiwen.com/subject/vhdwrttx.html