<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 主要特點 PHP 常用函數總結 ## 二、php中對象轉數組有哪些方法 ### 1、用(array)方式遞歸轉化(實質是解決對象里還有對象的問題 //PHP stdClass Object轉array function object_array($array) { if(is_object($array)) { $array = (array)$array; } if(is_array($array)) { foreach($array as $key=>$value) { $array[$key] = object_array($value); } } return $array; } 結果是對的,但是對象的屬性如果是protected的話,轉換成數組的鍵的時候屬性名前會加上\*字符 array(9) { ["*questions"] => array(21) { [0] => array(13) { ["bq_id"] => int(28) ["bq_b_id"] => int(5) 這個\*是因為我的屬性是protected的,如果屬性換成public,就沒有了 ### 2、轉$xmlString的 ~~~ $array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE); ~~~ ### 3、json\_decode(json\_encode($array),true)方式 這個你對象首先能被json\_encode才行 ~~~ 4.如果是10W的數據量的話,執行要進1s,結構再復雜些,可以達到3s,性能太差了,可以用以下替換: function object2array(&$object) { $object = json_decode( json_encode( $object),true); return $object; } ~~~ ### 4、$arr = (array)$obj方式轉化的效果 如果對象里面沒有對象,這個方法是對的 對象里面還有對象,就得用第一種遞歸的方式將所有的對象都轉換成數組 # 判斷是否傳入必要參數 ~~~ /** * 判斷是否傳入必要參數 * @param [type] $inter_param [description] * @param [type] $agency [description] * @param [type] $merchant [description] * @return [type] [description] */ function judge_parameter($param){ if(!isset($param['inter_param']) || !isset($param['agency']) || !isset($param['merchant'])){ return false; } if(empty($param['inter_param']) || empty($param['agency']) || empty($param['merchant'])){ return false; } return true; } ~~~ # 判斷數組類型參數是否含有空元素值 ~~~ //$param array function is_arraynull($param){ if(!is_array($param)){ return '0'; }else{ foreach ($param as $key => $value) { if($value!=''){ $ret = is_arraynull($value); }else{ return 1; } } } } ~~~ # 接收異步過來的get消息 ~~~ $sms_result_data = $_GET; //用這種 $param = request()->param(); //thinkphp5接收消息 $sms_result_data1 = file_get_contents("php://input"); ~~~ # 判斷路徑是文件還是目錄 ~~~ function f_type($f_path){ return is_dir($f_path)?'dir':suffixtype($f_path); } ~~~ * * * # 計算文件或目錄字節大小 ~~~ //計算文件或目錄字節大小 function bytesize_calc($f_path){ if(!is_dir($f_path)){ return sprintf("%u", filesize($f_path));} $bytesize = 0; $f_arr = scandir($f_path); $size = count($f_arr); for($i=0;$i<$size;$i++){ if('.'==$f_arr[$i]||'..'==$f_arr[$i])continue; $file_or_dir = $f_path.'/'.$f_arr[$i]; $bytesize += bytesize_calc($file_or_dir); } return $bytesize; } //獲得文件大小 function f_size($f_path){ return size_formate(bytesize_calc($f_path)); } ~~~ # 獲取文件后綴名,并判斷是否在定義的數組中 ~~~ /** * 獲取文件后綴名,并判斷是否合法 * * @param string $file_name //是一個文件的路徑 * @param array $allow_type //需要的文件類型數組 * @return blob */ function get_file_suffix($file_name, $allow_type = array()) { $file_suffix = strtolower(array_pop(explode('.', $file_name))); if (empty($allow_type)) { return $file_suffix; } else { if (in_array($file_suffix, $allow_type)) { return true; } else { return false; } } } ~~~ # 默認獲得文件修改時間 ~~~ function filetime($way,$char='m'){ date_default_timezone_set('PRC'); switch($char){ case 'c':$localtime = date('Y-m-d H:i:s',filectime($way)); break; case 'm':$localtime = date('Y-m-d H:i:s',filemtime($way)); break; case 'a':$localtime = date('Y-m-d H:i:s',fileatime($way)); break; } return $localtime; } ~~~ # 檢查目標文件夾是否存在,如果不存在則自動創建該目錄 ~~~ /** * 檢查目標文件夾是否存在,如果不存在則自動創建該目錄 * * @access public * @param string folder 目錄路徑。不能使用相對于網站根目錄的URL * * @return bool */ function make_dir($folder) { $reval = false; if (!file_exists($folder)) { /* 如果目錄不存在則嘗試創建該目錄 */ @umask(0); /* 將目錄路徑拆分成數組 */ preg_match_all('/([^\/]*)\/?/i', $folder, $atmp); /* 如果第一個字符為/則當作物理路徑處理 */ $base = ($atmp[0][0] == '/') ? '/' : ''; /* 遍歷包含路徑信息的數組 */ foreach ($atmp[1] AS $val) { if ('' != $val) { $base .= $val; if ('..' == $val || '.' == $val) { /* 如果目錄為.或者..則直接補/繼續下一個循環 */ $base .= '/'; continue; } } else { continue; } $base .= '/'; if (!file_exists($base)) { /* 嘗試創建目錄,如果創建失敗則繼續循環 */ if (@mkdir(rtrim($base, '/'), 0777)) { @chmod($base, 0777); $reval = true; } } } } else { /* 路徑已經存在。返回該路徑是不是一個目錄 */ $reval = is_dir($folder); } clearstatcache(); return $reval; } ~~~ # 獲取隨機字符串 ~~~ /** * 隨機字符 * @param int $length 長度 * @param string $type 類型 * @param int $convert 轉換大小寫 1大寫 0小寫 * @return string */ function random($length=10, $type='letter', $convert=0) { $config = array( 'number'=>'1234567890', 'letter'=>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'string'=>'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789', 'all'=>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' ); if(!isset($config[$type])) $type = 'letter'; $string = $config[$type]; $code = ''; $strlen = strlen($string) -1; for($i = 0; $i < $length; $i++){ $code .= $string{mt_rand(0, $strlen)}; } if(!empty($convert)){ $code = ($convert > 0)? strtoupper($code) : strtolower($code); } return $code; } ~~~ # 獲取當前文件所在的文件路徑 ~~~ define('CUR_API_PATH', rtrim(str_replace('\\', '/', dirname(__FILE__)),'/').'/'); ~~~ # PHP限制IP訪問 只允許指定IP訪問 允許\*號通配符過濾IP ~~~ /** * 檢測訪問的ip是否為規定的允許的ip * Enter description here ... */ function check_ip(){ $ALLOWED_IP=array('192.168.2.*','127.0.0.1','192.168.2.49'); $IP=getIP(); $check_ip_arr= explode('.',$IP);//要檢測的ip拆分成數組 #限制IP if(!in_array($IP,$ALLOWED_IP)) { foreach ($ALLOWED_IP as $val){ if(strpos($val,'*')!==false){//發現有*號替代符 $arr=array();// $arr=explode('.', $val); $bl=true;//用于記錄循環檢測中是否有匹配成功的 for($i=0;$i<4;$i++){ if($arr[$i]!='*'){//不等于* 就要進來檢測,如果為*符號替代符就不檢查 if($arr[$i]!=$check_ip_arr[$i]){ $bl=false; break;//終止檢查本個ip 繼續檢查下一個ip } } }//end for if($bl){//如果是true則找到有一個匹配成功的就返回 return; die; } } }//end foreach header('HTTP/1.1 403 Forbidden'); echo "Access forbidden"; die; } } ~~~ # api返回信息 ~~~ /** * 數據返回 * @param [int] $code [結果碼 200:正常/4**數據問題/5**服務器問題] * @param [string] $msg [返回的提示信息] * @param [array] $data [返回的數據] * @return [string] [最終的json數據] */ public function return_msg($code, $msg = '', $data = []) { /*********** 組合數據 ***********/ $return_data['code'] = $code; $return_data['msg'] = $msg; $return_data['data'] = $data; /*********** 返回信息并終止腳本 ***********/ echo json_encode($return_data,JSON_UNESCAPED_UNICODE); die; } ~~~ # php常用自定義函數類下載 [https://pan.baidu.com/s/18ZuQm5cx3ynQtQqcQgK0Vw](https://pan.baidu.com/s/18ZuQm5cx3ynQtQqcQgK0Vw) * * * # php 設置字符編碼為utf-8 `header("Content-Type: text/html;charset=utf-8");` * * * # GB2312和utf8相互轉換 ~~~ echo iconv('GB2312', 'UTF-8//IGNORE', $str); //將字符串的編碼從GB2312轉到UTF-8 //ignore的意思是忽略轉換時的錯誤,如果沒有ignore參數,所有該字符后面的字符串都無法被保存。 iconv("UTF-8","GB2312//IGNORE",$data); print_r(iconv_get_encoding()); //得到當前頁面編碼信息 // 轉碼 function gbk($str){return iconv('utf-8','gbk',$str);} function utf8($str){return iconv('gbk','utf-8',$str);} ~~~ # 路徑格式化(替換雙斜線為單斜線) ~~~ function path_formate($str){ return str_replace('\\\\','\\',$str); } ~~~ * * * # 獲取當前文件的目錄 ~~~ 方法一: define('BASE_PATH',rtrim(str_replace('\\','/',__DIR__).'/')); 方法二: define('BASE_DIR', rtrim(str_replace('\\', '/', dirname(__FILE__)),'/').'/'); ~~~ * * * # 打印輸出 ~~~ function dump($var) { echo '<pre>'; print_r($var); echo '</pre>'; } function vp($var) { echo '<pre>'; var_dump($var); echo '</pre>'; } function dd($var) { echo '<pre>'; var_dump($var); echo '</pre>'; die; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看