- 閉包函數(shù)
$b = 'b';
$qq = function($a) use ($b){
return $a.$b;
};
echo $qq('a'); //打印的是'ab'
use里面的變量一定要是存在的值
is_numeric() 判斷一個(gè)值是不是數(shù)字,返回結(jié)果是bool類型
- 取唯一值
function createCode(){
return md5(uniqid(microtime(true),true));
}
- 把excell里面的信息轉(zhuǎn)換成數(shù)組
public function test2(Request $request)
{
$request = $request->all();
$text = $request['text'];
$res1 = preg_replace('/\n/','_____',$text);
// 把橫線作為分割標(biāo)識 切分成數(shù)組
$res2 = explode('_____',$res1);
// dd($res2);
foreach ($res2 as $res3){
// echo $res3; //此時(shí)$res3是每一行的值
$res4 = preg_replace('/\t/','***',$res3);
// dd($res4); //把每一行的值轉(zhuǎn)換成了數(shù)組
$res5 = explode('***',$res4);
dd($res5);
}
}
2.取兩個(gè)數(shù)組的鍵的差集
// array_diff_key($arr1,$arr2); 返回的是$arr1,在$arr2中不同的鍵的數(shù)組
//結(jié)果都是$arr1里面的鍵
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
$a = array_diff_key($array1, $array2);
$b = array_diff_key($array2, $array1);
$aa = array_merge($a,$b);
dd($aa);

取兩個(gè)結(jié)果的差集
3.返回?cái)?shù)組中值的差集
// array_diff($arr1,$arr2); //返回的是$arr1數(shù)組中的值,跟$arr2數(shù)組的值相比后的差集。
//(結(jié)果都是$arr1里面的值)
$array1 = array('blue' => 5, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
$aa = array_diff($array1, $array2);
dd($aa);

返回?cái)?shù)組中值的差集
4.array_map
array array_map ( callable $callback , array $array1 [, array $... ] )
array_map():返回?cái)?shù)組,是為 array1 每個(gè)元素應(yīng)用 callback函數(shù)之后的數(shù)組。 callback 函數(shù)形參的數(shù)量和傳給 array_map() 數(shù)組數(shù)量,兩者必須一樣。
使用方式1
function cube($n)
{
return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
結(jié)果
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
使用方式2,=匿名函數(shù)
$func = function($value) {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
使用方式3,直接把函數(shù)當(dāng)成參數(shù)寫
$a = array(1, 2, 3, 4, 5);
$b = array_map(function($n){
return $n*$n;
},$a);
dd($b);
使用4,更多的數(shù)組
function show_Spanish($n, $m)
{
return("The number $n is called $m in Spanish");
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("show_Spanish", $a, $b);
print_r($c);
// printout of $c
Array
(
[0] => The number 1 is called uno in Spanish
[1] => The number 2 is called dos in Spanish
[2] => The number 3 is called tres in Spanish
[3] => The number 4 is called cuatro in Spanish
[4] => The number 5 is called cinco in Spanish
)
例四還有一種方式
public function test()
{
$arr1= array(1, 2, 3, 4, 5);
$arr2 = array(1, 2, 3, 4, 5);
$res = array_map(function($n,$m){
return $n*$m;
},$arr1,$arr2);
dd($res);
}
得到的結(jié)果也是$arr1中的值與$arr2的值相乘的值
array:5 [▼
0 => 1
1 => 4
2 => 9
3 => 16
4 => 25
]
其實(shí)這個(gè)函數(shù)是,又幾個(gè)參數(shù),就要有幾個(gè)數(shù)組
5.array_walk($arr,'fun',$prefix)
// array_walk()第一個(gè)參數(shù)是數(shù)組,第二個(gè)參數(shù)是函數(shù)。也可以有第三個(gè)參數(shù),自定義輸出內(nèi)容
// 作為參數(shù)的函數(shù)中,第一個(gè)是值,第二個(gè)是鍵
$fruits = array( "a" => "orange", "b" => "banana", "c" => "apple");
array_walk($fruits,function($val,$key){
echo $key.':'.$val.'<br>';
});
$fruits = array( "a" => "orange", "b" => "banana", "c" => "apple");
array_walk($fruits,function($val,$key,$prefix){
echo $key.':'.$prefix.'--'.$val.'<br>';
},'這是前綴,是第三個(gè)參數(shù)');

array_walk()

array_walk($arr,'fun',$prefix)
6.compact()

compact(),把字段組成數(shù)組
正則
/**
* 判斷是否是郵箱
* @param $email
* @return bool
*/
public static function isEmail($email)/*{{{*/
{
if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email)) {
return true;
}
return false;
}
/**
* 判斷是否是手機(jī)號碼
* @param $mobile
* @return mixed
*/
public static function isMobile($mobile)
{
$preg_mobile = '/^(130|131|132|133|134|135|136|137|138|139|150|151|152|153|154|155|156|157|158|159|180|181|182|183|184|185|186|187|188|189|170|171)\d{8}$/';
return preg_match($preg_mobile, $mobile);
}
function get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
//檢查IP地址
if(!preg_match("/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/", $ip)) {
return '0.0.0.0';
}
return $ip;
}
//顯示錯(cuò)誤信息,并結(jié)束
function display_error_exit($error_msg) {
header("Content-type: text/html; charset=utf-8");
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
exit($error_msg);
}
//清除html代碼
function clear_html_code($string) {
$string = trim(addslashes(strip_tags($string)));
return $string;
}
function encoding_html($string) {
$string = trim(addslashes(htmlspecialchars($string)));
return $string;
}
//站點(diǎn)臨時(shí)關(guān)閉
function website_close() {
global $web_site;
if($web_site['close']==1) {
echo "<script>top.location.href='/close.php';</script>";
exit();
}
}
//地區(qū)限制功能(可限制地區(qū)和IP)
function website_deny() {
global $C_Patch;
include_once($C_Patch."/ip.php");
include_once($C_Patch."/../cache/dqxz.php");
include_once($C_Patch."/common/commonfun.php");
$client_ip = get_client_ip();
$address = '='.iconv("GB2312","UTF-8",convertip($client_ip,"$C_Patch/"));
foreach ($dqxz as $k => $v) {
if (strpos($address,$v) || strpos('='.$client_ip,$v)) {
display_error_exit("對不起,您所在的地區(qū)或IP暫時(shí)無法訪問,請稍后重試");
}
}
}
//判斷手機(jī)或電腦
function isMobile()
{
// 如果有HTTP_X_WAP_PROFILE則一定是移動設(shè)備
if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
{
return true;
}
// 如果via信息含有wap則一定是移動設(shè)備,部分服務(wù)商會屏蔽該信息
if (isset ($_SERVER['HTTP_VIA']))
{
// 找不到為flase,否則為true
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
// 腦殘法,判斷手機(jī)發(fā)送的客戶端標(biāo)志,兼容性有待提高
if (isset ($_SERVER['HTTP_USER_AGENT']))
{
$clientkeywords = array ('nokia',
'sony',
'ericsson',
'mot',
'samsung',
'htc',
'sgh',
'lg',
'sharp',
'sie-',
'philips',
'panasonic',
'alcatel',
'lenovo',
'iphone',
'ipod',
'blackberry',
'meizu',
'android',
'netfront',
'symbian',
'ucweb',
'windowsce',
'palm',
'operamini',
'operamobi',
'openwave',
'nexusone',
'cldc',
'midp',
'wap',
'mobile'
);
// 從HTTP_USER_AGENT中查找手機(jī)瀏覽器的關(guān)鍵字
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
{
return true;
}
}
// 協(xié)議法,因?yàn)橛锌赡懿粶?zhǔn)確,放到最后判斷
if (isset ($_SERVER['HTTP_ACCEPT']))
{
// 如果只支持wml并且不支持html那一定是移動設(shè)備
// 如果支持wml和html但是wml在html之前則是移動設(shè)備
if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
{
return true;
}
}
return false;
}
//截圖功能用來計(jì)算字符長度
function str_leng($str) {
mb_internal_encoding("UTF-8");
return mb_strlen($str)*12;
}