Maison  >  Article  >  développement back-end  >  11 fonctions PHP courantes à partager

11 fonctions PHP courantes à partager

零到壹度
零到壹度original
2018-03-19 14:49:391906parcourir

Cette fois, je vous apporte le partage de connaissances sur 11 fonctions PHP couramment utilisées. Ces compétences peuvent grandement améliorer l'efficacité de notre développement quotidien et améliorer la qualité de notre code.

1. Outil de débogage de points d'arrêt mis en avant (flexible et pratique, il ne peut pas se limiter aux points d'arrêt et aux backgroups) :

function debug($data){

    if(empty($data)){
        var_dump($data);
        die;
    }

    if(!is_array($data)){
        echo "<pre style=&#39;background-color: #000;color: #fff;font-size: 14px;min-height: 100px;line-height: 50px;&#39;>";
        echo "<span style=&#39;margin-left: 20px;font-size: 18px;&#39;>";
        print_r($data);
        echo "</span>";
        echo "
";         die;     }     echo "
";
    echo "<br /><br /><br /><span style=&#39;margin-left: 20px;font-size: 13px;&#39;>";
    print_r($data);
    echo "</span><br /><br /><br />";
    echo "
";     die; }
2. Classification infinie récursive (méprisez résolument le code poubelle qui écrit les opérations de base de données en boucles ou par récursion) :
/* @param   $data  array   数据
* @param   $pid   int     父类关系值
* @param   $parentFieldstring  父类字段
* @param $pkField string  主键字段
* return array
*/
function getTreesPro($data,$pid='0',$parentField='pid',$pkField='id'){
        $tree =array();
        foreach($data as $k=>$v){

            if($v[$parentField] == $pid){
                $temp   =   getTreesPro($data,$v[$pkField]);//$data是对象则改为$v->$pkField
                if(!empty($temp)){
                //分层
                    $v['son']= getTreesPro($data,$v[$pkField]);
                }
                $tree[] = $v;
            }
        }
        return $tree;
    }
3. Tableau en objet
function arrayToObject($arr){
    if(is_array($arr)){
        return (object) array_map(__FUNCTION__, $arr);
    }else{
        return $arr;
    }
}
4. tableau
function object2array(&$object) {
    $object =  json_decode( json_encode( $object),true);
    return  $object;
}
5. Générer un numéro de commande unique
function generateJnlNo() {
   date_default_timezone_set('PRC');
   $yCode    = array('A','B','C','D','E','F','G','H','I','J');
   $orderSn  = '';
   $orderSn .= $yCode[(intval(date('Y')) - 1970) % 10];
   $orderSn .= strtoupper(dechex(date('m')));
   $orderSn .= date('d').substr(time(), -5);
   $orderSn .= substr(microtime(), 2, 5);
   $orderSn .= sprintf('%02d', mt_rand(0, 99));
   //echo $orderSn,PHP_EOL;     //得到唯一订单号:G107347128750079
   return $orderSn;
}
6. Convertir un tableau bidimensionnel en HashMap et renvoie le résultat
/**
* 用法1:
* @code php
* $rows = array(
*     array('id' => 1, 'value' => '1-1'),
*     array('id' => 2, 'value' => '2-1'),
*);
* $hashmap = Helper_Array::hashMap($rows, 'id', 'value');
*
* dump($hashmap);
*   // 输出结果为
*   // array(
*   //   1 => '1-1',
*   //   2 => '2-1',
*   //)
* @endcode
*
* 如果省略 $value_field 参数,则转换结果每一项为包含该项所有数据的数组。
*
* 用法2:
* @code php
* $rows = array(
*     array('id' => 1, 'value' => '1-1'),
*     array('id' => 2, 'value' => '2-1'),
*);
* $hashmap = Helper_Array::hashMap($rows, 'id');
*
* dump($hashmap);
*   // 输出结果为
*   // array(
*   //   1 => array('id' => 1, 'value' => '1-1'),
*   //   2 => array('id' => 2, 'value' => '2-1'),
*   //)
* @endcode
*
* @param array $arr 数据源
* @param string $key_field 按照什么键的值进行转换
* @param string $value_field 对应的键值
*
* @return array 转换后的 HashMap 样式数组
*/
function to_hashmap($arr, $key_field, $value_field = null){
     $ret = array();
     if ($value_field){
         foreach ($arr as $row){
             $ret[$row[$key_field]] = $row[$value_field];
         }
     } 
     else{
         foreach ($arr as $row){
             $ret[$row[$key_field]] = $row;
         }
     }
     return $ret;
}
7. À partir du tableau à deux chiffres, récupérez tous les résultats d'un certain champ (y compris les résultats en double)

Par exemple, récupérez toutes les valeurs d'identification. ​​à partir des données $brandList :$ids = array_column($brandList,'id'); Résultat de la déduplication $ids= array_unique(array_column($brandList,'id'));

if (!function_exists('array_column')) {

   /**
    * Returns the values from a single column of the input array, identified by
    * the $columnKey.
    *
    * Optionally, you may provide an $indexKey to index the values in the returned
    * array by the values from the $indexKey column in the input array.
    *
    * @param array $input A multi-dimensional array (record set) from which to pull
    *                     a column of values.
    * @param mixed $columnKey The column of values to return. This value may be the
    *                         integer key of the column you wish to retrieve, or it
    *                         may be the string key name for an associative array.
    * @param mixed $indexKey (Optional.) The column to use as the index/keys for
    *                        the returned array. This value may be the integer key
    *                        of the column, or it may be the string key name.
    * @return array
    */
   function array_column($input = null, $columnKey = null, $indexKey = null){
       // Using func_get_args() in order to check for proper number of
       // parameters and trigger errors exactly as the built-in array_column()
       // does in PHP 5.5.
       $argc = func_num_args();
       $params = func_get_args();
       if ($argc < 2) {
           trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING);
           return array();
       }
       if (!is_array($params[0])) {
           trigger_error(&#39;array_column() expects parameter 1 to be array, &#39; . gettype($params[0]) . &#39; given&#39;, E_USER_WARNING);
           return array();
       }
       if (!is_int($params[1])
           && !is_float($params[1])
           && !is_string($params[1])
           && $params[1] !== null
           && !(is_object($params[1]) && method_exists($params[1], &#39;__toString&#39;))
       ) {
           trigger_error(&#39;array_column(): The column key should be either a string or an integer&#39;, E_USER_WARNING);
           return array();
       }
       if (isset($params[2])
           && !is_int($params[2])
           && !is_float($params[2])
           && !is_string($params[2])
           && !(is_object($params[2]) && method_exists($params[2], &#39;__toString&#39;))
       ) {
           trigger_error(&#39;array_column(): The index key should be either a string or an integer&#39;, E_USER_WARNING);
           return array();
       }
       $paramsInput = $params[0];
       $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null; 
       $paramsIndexKey = null;
       if (isset($params[2])) {
           if (is_float($params[2]) || is_int($params[2])) {
               $paramsIndexKey = (int) $params[2];
           } else {
               $paramsIndexKey = (string) $params[2];
           }
       } 
       $resultArray = array(); 
       foreach ($paramsInput as $row) { 
           $key = $value = null;
           $keySet = $valueSet = false;

           if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) {
               $keySet = true;
               $key = (string) $row[$paramsIndexKey];
           } 
           if ($paramsColumnKey === null) {
               $valueSet = true;
               $value = $row;
           } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row)) {
               $valueSet = true;
               $value = $row[$paramsColumnKey];
           } 
           if ($valueSet) {
               if ($keySet) {
                   $resultArray[$key] = $value;
               } else {
                   $resultArray[] = $value;
               }
           }
       } 
       return array_unique($resultArray);
   } 
}
8. Méthode de mise en cache client
public function cache($seconds_to_cache = 3600){
    $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
    header("Expires: $ts");
    header("Pragma: cache");
    header("Cache-Control: max-age=$seconds_to_cache");
}
9. Méthode de non-mise en cache côté client
 public function disCache(){
    $ts = gmdate("D, d M Y H:i:s",strtotime(&#39;-1 year&#39;)) . " GMT";
    header("Expires: $ts");
    header("Last-Modified: $ts");
    header("Pragma: no-cache");
    header("Cache-Control: no-cache, must-revalidate");
}
10.Retour à la source de la page précédente
public function referer(){
    return $_SERVER[&#39;HTTP_REFERER&#39;];
}
11. méthode (plus utilisée dans l'API) Beaucoup)
public function pageinfo(){
    $pageinfo               = new \stdClass;
    $pageinfo->length       = isset($_GET['length']) ? $_GET['length'] : $this->length;
    $pageinfo->page         = isset($_GET['page']) ? $_GET['page'] : 1;
    $pageinfo->end_id       = isset($_GET['end_id']) ? $_GET['end_id'] : 1;
    $pageinfo->offset= $pageinfo->page<=1 ? 0 : ($pageinfo->page-1) * $pageinfo->length;
    $pageinfo->totalNum     = $pageinfo->totalNum? $pageinfo->totalNum  : 0;
    $pageinfo->totalPage    = $pageinfo->totalNum / $pageinfo->length;

    return $pageinfo;


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn