php基本函数汇总

前端之家收集整理的这篇文章主要介绍了php基本函数汇总前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.统计数组元素个数

2 [1003] => 2 [1008] => 1 [1001] => 1 [1000] => 1 [1004] => 1 [1012] => 1 [1009] => 1 [1111] => 1 )

2. 循环删除目录

isDir()) { if (! $file->isDot()) { cleanup_directory($file->getPathname()); } } else { unlink($file->getPathname()); } } rmdir($dir); }

3.无限极分类生成

$items = array(
1 => array('id' => 1,'pid' => 0,'name' => '安徽省'),2 => array('id' => 2,'name' => '浙江省'),3 => array('id' => 3,'pid' => 1,'name' => '合肥市'),4 => array('id' => 4,'pid' => 3,'name' => '长丰县'),5 => array('id' => 5,'name' => '安庆市'),);
print_r(generateTree($items));
/**

  • 如何取数据格式化的树形数据
    */
    $tree = generateTree($items);
    function getTreeData($tree){
    foreach($tree as $t){
    echo $t['name'].'
    ';
    if(isset($t['son'])){
    getTreeData($t['son']);
    }
    }
    }

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

PHP;"> 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

return $result;
},[]);
// [1 => 1,2 => 2,... 5 => 5]

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

'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,3]);

// 2 4 6

7.繁殖兔子

PHP;"> $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])."
";
}

8 .datetime

PHP;"> 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.加密解密

PHP;"> 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,1)) < ord(substr($char,1)))
{
$str .= chr((ord(substr($data,1)) + 256) - ord(substr($char,1)));
}
else
{
$str .= chr(ord(substr($data,1)) - ord(substr($char,1)));
}
}
return $str;
}

10 . 多维数组降级

array_walk_recursive($arr,function($value) use (&$result) {
$result[] = $value;
});

return $result;
}
print_r(array_flatten([1,[2,3],[4,5]]));// [1,5]] => [1,5]
// var new_array = old_array.concat(value1[,value2[,...[,valueN]]])
var test = [1,6],[7,8]];
[].concat.apply([],test); // [1,6,7,8] 对于 test 数组中的每一个 value, 将它 concat 到空数组 [] 中去,而因为 concat 是 Array 的 prototype,所以我们用一个空 array 作载体
var test1 = [1,[3,[5]]]];

function flatten(arr) {
return arr.reduce(function(pre,cur) {
if(Array.isArray(cur)) {
return flatten(pre.concat(cur));
}

return pre.concat(cur);

},[]);
}

// [1,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.二维数组去重

array('id'=>'2','title'=>'...','ding'=>'1','jing'=>'1','time'=>'...','url'=>'...','dj'=>'...'),array('id'=>'2','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.格式化字节大小

= 1024 && $i < 6; $i++) $size /= 1024; return round($size,2) . $delimiter . $units[$i]; }

14.3分钟前

PHP;"> /** * 将指定时间戳转换为截止当前的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',7 * 24 * 60 * 60 => '周前 ('.date('m-d',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.身份证号

PHP;"> /** * 判断参数字符串是否为天朝身份证号 * @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,8,1,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,1) * $Wi[$i]; } $seq = $cardNoSum % 11; $id = $id.$Ai[$seq]; } //效验18位身份证最后一位字符的合法性 $cardNoSum = 0; $id17 = substr($id,17); $lastString = substr($id,17,1); for($i = 0; $i < 17; $i++) { $cardNoSum += substr($id,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,2); $BirthYear = substr($id,4); $BirthMonth = substr($id,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的集合

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;'));

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

原文链接:https://www.f2er.com/php/21548.html

猜你在找的PHP相关文章