加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php基本函数合集

发布时间:2023-04-01 13:00:57 所属栏目:PHP教程 来源:
导读:本文给大家汇总了16个常见的php基本函数,涵盖的面很广,这里推荐给大家,希望对大家学习php能够有所帮助。1.统计数组元素个数$arr = array( '1011,1003,1008,1001,1000,1004,1012', '1009',

本文给大家汇总了16个常见的php基本函数,涵盖的面很广,这里推荐给大家,希望对大家学习php能够有所帮助。

1.统计数组元素个数

$arr = array( 

   '1011,1003,1008,1001,1000,1004,1012', 

   '1009', 

   '1011,1003,1111' 

  ); 

$result = array(); 

foreach ($arr as $str) { 

 $str_arr = explode(',', $str); 

 foreach ($str_arr as $v) { 

  // $result[$v] = isset($result[$v]) ? $result[$v] : 0; 

  // $result[$v] = $result[$v] + 1; 

  $result[$v] = isset($result[$v]) ? $result[$v]+1 : 1; 

 } 

print_r($result); 

//Array 

[1011] => 2 

[1003] => 2 

[1008] => 1 

[1001] => 1 

[1000] => 1 

[1004] => 1 

[1012] => 1 

[1009] => 1 

[1111] => 1 

2. 循环删除目录

function cleanup_directory($dir) { 

 foreach (new DirectoryIterator($dir) as $file) { 

  if ($file->isDir()) { 

   if (! $file->isDot()) { 

    cleanup_directory($file->getPathname()); 

   } 

  } else { 

    unlink($file->getPathname()); 

  } 

 } 

  rmdir($dir); 

3.无限极分类生成树

function generateTree($items){ 

  $tree = array(); 

  foreach($items as $item){ 

    if(isset($items[$item['pid']])){ 

      $items[$item['pid']]['son'][] = &$items[$item['id']]; 

    }else{ 

      $tree[] = &$items[$item['id']]; 

    } 

  } 

  return $tree; 

function generateTree2($items){ 

  foreach($items as $item) 

    $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; 

  return isset($items[0]['son']) ? $items[0]['son'] : array(); 

 

$items = array( 

  1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'), 

  2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'), 

  3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'), 

  4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'), 

  5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'), 

); 

print_r(generateTree($items)); 

/** 

 * 如何取数据格式化的树形数据 

 */ 

$tree = generateTree($items); 

function getTreeData($tree){ 

  foreach($tree as $t){ 

    echo $t['name'].'<br>'; 

    if(isset($t['son'])){ 

      getTreeData($t['son']); 

    } 

  } 

4.数组排序 a - b 是数字数组写法 遇到字符串的时候就要

var test = ['ab', 'ac', 'bd', 'bc']; 

test.sort(function(a, b) { 

  if(a < b) { 

    return -1; 

  } 

 

  if(a > b) { 

    return 1; 

  } 

 

  return 0; 

}); 

5.array_reduce

$raw = [1,2,3,4,5,]; 

// array_reduce 的第三个参数是 $result 的初始值 

array_reduce($raw, function($result, $value) { 

  $result[$value] = $value; 

 

  return $result; 

}, []); 

// [1 => 1, 2 => 2, ... 5 => 5] 

6.array_map 闭包中只接受一个或者多个参数,闭包的参数数量和 array_map 本身的参数数量必须一致

$input = ['key' => 'value']; 

array_map(function($key, $value) { 

 

  echo $key . $value; 

}, array_keys($input), $input) 

// 'keyvalue' 

$double = function($item) { 

 return 2 * $item; 

 

$result = array_map($double, [1,2,3]); 

 

// 2 4 6 

7.繁殖兔子

$month = 12; 

  $fab = array(); 

 

  $fab[0] = 1; 

  $fab[1] = 1; 

 

   for ($i = 2; $i < $month; $i++) 

   { 

     $fab[$i] = $fab[$i - 1] + $fab[$i - 2]; 

   } 

 

   for ($i = 0; $i < $month; $i++) 

   { 

     echo sprintf("第{%d}个月兔子为:{%d}",$i, $fab[$i])."<br/>"; 

   } 

8 .datetime

function getCurMonthFirstDay($date) 

  return date('Y-m-01', strtotime($date)); 

 getCurMonthLastDay('2015-07-23') 

function getCurMonthLastDay($date) 

  return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' +1 month -1 day')); 

9.加密解密

function encrypt($data, $key) 

  $key  =  md5($key); 

  $x   =  0; 

  $len  =  strlen($data); 

  $l   =  strlen($key); 

  $char  =  ''; 

  for ($i = 0; $i < $len; $i++) 

  { 

    if ($x == $l) 

    { 

      $x = 0; 

    } 

    $char .= $key{$x}; 

    $x++; 

  } 

  $str  =  ''; 

  for ($i = 0; $i < $len; $i++) 

  { 

    $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256); 

  } 

  return base64_encode($str); 

 

function decrypt($data, $key) 

  $key = md5($key); 

  $x = 0; 

  $data = base64_decode($data); 

  $len = strlen($data); 

  $l = strlen($key); 

  $char = ''; 

  for ($i = 0; $i < $len; $i++) 

  { 

    if ($x == $l) 

    { 

      $x = 0; 

    } 

    $char .= substr($key, $x, 1); 

    $x++; 

  } 

  $str = ''; 

  for ($i = 0; $i < $len; $i++) 

  { 

    if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) 

    { 

      $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); 

    } 

    else 

    { 

      $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); 

    } 

  } 

  return $str; 

10 . 多维数组降级

function array_flatten($arr) { 

  $result = []; 

 

  array_walk_recursive($arr, function($value) use (&$result) { 

    $result[] = $value; 

  }); 

 

  return $result; 

print_r(array_flatten([1,[2,3],[4,5]]));// [1,[2,3],[4,5]] => [1,2,3,4,5] 

// var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) 

var test = [1,2,3,[4,5,6],[7,8]]; 

[].concat.apply([], test); // [1,2,3,4,5,6,7,8] 对于 test 数组中的每一个 value, 将它 concat 到空数组 [] 中去,而因为 concat 是 Array 的 prototype,所以我们用一个空 array 作载体 

var test1 = [1,2,[3,[4,[5]]]]; 

 

function flatten(arr) { 

  return arr.reduce(function(pre, cur) { 

    if(Array.isArray(cur)) { 

      return flatten(pre.concat(cur)); 

    } 

 

    return pre.concat(cur); 

  }, []); 

 

// [1,2,3,4,5] 

json_encode中文 

function json_encode_wrapper ($result) 

  if(defined('JSON_UNESCAPED_UNICODE')){ 

    return json_encode($result,JSON_UNESCAPED_UNICODE|JSON_NUMERIC_CHECK); 

  }else { 

    return preg_replace( 

      array("#///u([0-9a-f][0-9a-f][0-9a-f][0-9a-f])#ie", "//"(/d+)/"/",), 

      array("iconv('UCS-2', 'UTF-8', pack('H4', '//1'))", "//1"), 

      json_encode($result) 

    ); 

  } 

12.二维数组去重

$arr = array( 

 

  array('id'=>'2','title'=>'...','ding'=>'1','jing'=>'1','time'=>'...','url'=>'...','dj'=>'...'), 

 

  array('id'=>'2','title'=>'...','ding'=>'1','jing'=>'1','time'=>'...','url'=>'...','dj'=>'...') 

 

); 

function about_unique($arr=array()){  

  /*将该种二维数组看成一维数组,则   该一维数组的value值有相同的则干掉只留一个,并将该一维   数组用重排后的索引数组返回,而返回的一维数组中的每个元素都是   原始key值形成的关联数组  */  

$keys =array(); 

  $temp = array(); 

  foreach($arr[0] as $k=>$arrays) { 

  /*数组记录下关联数组的key值*/   

  $keys[] = $k; 

  } 

  //return $keys;  /*降维*/   

foreach($arr as $k=>$v) { 

  $v = join(",",$v); //降维    

  $temp[] = $v; 

  } 

  $temp = array_unique($temp); //去掉重复的内容   

foreach ($temp as $k => $v){ 

  /*再将拆开的数组按索引数组重新组装*/   

  $temp[$k] = explode(",",$v);  

  }  

  //return $temp;  /*再将拆开的数组按关联数组key值重新组装*/   

foreach($temp as $k=>$v) { 

  foreach($v as $kkk=>$ck) { 

   $data[$k][$keys[$kkk]] = $temp[$k][$kkk]; 

  } 

  } 

  return $data; 

 } 

13.格式化字节大小

/** 

* 格式化字节大小 

* @param number $size   字节数 

* @param string $delimiter 数字和单位分隔符 

* @return string      格式化后的带单位的大小 

* @author  

*/ 

function format_bytes($size, $delimiter = '') { 

 $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB'); 

 for ($i = 0; $size >= 1024 && $i < 6; $i++) $size /= 1024; 

 return round($size, 2) . $delimiter . $units[$i]; 

14.3分钟前

/** 

* 将指定时间戳转换为截止当前的xx时间前的格式 例如 return '3分钟前'' 

* @param string|int $timestamp unix时间戳 

* @return string 

*/ 

function time_ago($timestamp) { 

  $etime = time() - $timestamp; 

  if ($etime < 1) return '刚刚';    

  $interval = array (      

   12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $timestamp).')', 

   30 * 24 * 60 * 60    => '个月前 ('.date('m-d', $timestamp).')', 

   7 * 24 * 60 * 60    => '周前 ('.date('m-d', $timestamp).')', 

   24 * 60 * 60      => '天前', 

   60 * 60         => '小时前', 

   60           => '分钟前', 

   1            => '秒前' 

  ); 

  foreach ($interval as $secs => $str) { 

    $d = $etime / $secs; 

    if ($d >= 1) { 

      $r = round($d); 

      return $r . $str; 

    } 

  }; 

15.身份证号

/** 

* 判断参数字符串是否为天朝身份证号 

* @param $id 需要被判断的字符串或数字 

* @return mixed false 或 array[有内容的array boolean为真] 

*/ 

function is_citizen_id($id) { 

  //长度效验 18位身份证中的X为大写 

  $id = strtoupper($id); 

  if(!(preg_match('/^/d{17}(/d|X)$/',$id) || preg_match('/^/d{15}$/',$id))) { 

   return false; 

  } 

  //15位老号码转换为18位 并转换成字符串 

  $Wi     = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);  

  $Ai     = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  

  $cardNoSum  = 0; 

  if(strlen($id)==16) { 

    $id    = substr(0, 6).'19'.substr(6, 9);  

    for($i = 0; $i < 17; $i++) { 

     $cardNoSum += substr($id,$i,1) * $Wi[$i]; 

    }  

    $seq    = $cardNoSum % 11;  

    $id    = $id.$Ai[$seq]; 

  } 

  //效验18位身份证最后一位字符的合法性 

  $cardNoSum  = 0; 

  $id17    = substr($id,0,17); 

  $lastString = substr($id,17,1); 

  for($i = 0; $i < 17; $i++) { 

    $cardNoSum += substr($id,$i,1) * $Wi[$i]; 

  }  

  $seq     = $cardNoSum % 11; 

  $realString = $Ai[$seq]; 

  if($lastString!=$realString) {return false;} 

  //地域效验 

  $oCity    = array(11=>"北京",12=>"天津",13=>"河北",14=>"山西",15=>"内蒙古",21=>"辽宁",22=>"吉林",23=>"黑龙江",31=>"上海",32=>"江苏",33=>"浙江",34=>"安徽",35=>"福建",36=>"江西",37=>"山东",41=>"河南",42=>"湖北",43=>"湖南",44=>"广东",45=>"广西",46=>"海南",50=>"重庆",51=>"四川",52=>"贵州",53=>"云南",54=>"西藏",61=>"陕西",62=>"甘肃",63=>"青海",64=>"宁夏",65=>"新疆",71=>"台湾",81=>"香港",82=>"澳门",91=>"国外"); 

  $City    = substr($id, 0, 2); 

  $BirthYear  = substr($id, 6, 4); 

  $BirthMonth = substr($id, 10, 2); 

  $BirthDay  = substr($id, 12, 2); 

  $Sex     = substr($id, 16,1) % 2 ;//男1 女0 

  //$Sexcn    = $Sex?'男':'女'; 

  //地域验证 

  if(is_null($oCity[$City])) {return false;} 

  //出生日期效验 

  if($BirthYear>2078 || $BirthYear<1900) {return false;} 

  $RealDate  = strtotime($BirthYear.'-'.$BirthMonth.'-'.$BirthDay); 

  if(date('Y',$RealDate)!=$BirthYear || date('m',$RealDate)!=$BirthMonth || date('d',$RealDate)!=$BirthDay) { 

    return false; 

  } 

  return array('id'=>$id,'location'=>$oCity[$City],'Y'=>$BirthYear,'m'=>$BirthMonth,'d'=>$BirthDay,'sex'=>$Sex); 

16.获取二维数组中某个key的集合

$user = array( 0 => array( 'id' => 1, 'name' => '张三', 'email' => 'zhangsan@sina.com', ), 1 => array( 'id' => 2, 'name' => '李四', 'email' => 'lisi@163.com', ), 2 => array( 'id' => 5, 'name' => '王五', 'email' => '10000@qq.com', ), ...... ); 

$ids = array(); $ids = array_map('array_shift', $user); 

$ids = array_column($user, 'id');//php5.5 

$names = array(); $names = array_reduce($user, create_function('$v,$w', '$v[$w["id"]]=$w["name"];return $v;')); 

以上所述就是本文的全部内容了,希望大家能够喜欢。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!