php的函数有用吗,一些有用的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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值