一些有用的php函数

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 = "
    ". $label . htmlspecialchars($output, ENT_QUOTES) . "
    ";
    } 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 ="
    " . $label . htmlspecialchars($output, ENT_QUOTES) . "
    ";
    }
    }
    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函数)