zoukankan      html  css  js  c++  java
  • PHP杂技(一)

    逻辑运算符 &&和& ||和|的部分区别

    返回结果类型不同,

    A||B 如果A为真那么B不会做判断,而A|B前后都做判断

    switch判断中并不是===,更像是==,例如(1) case 1,case ’1’都会执行

     

     

    获取文件后缀

     

    End等部分函数函数传入值必须为变量

     

    输出表格

    <?php

    //$h 代表行,$l 代表列

     function table_fn($h,$l){

           echo "<table border=1px>";

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

                  $bgcolor = $i%2 == 0 ? "#FFFFFF" : "#DDDDDD";

                  echo "<tr bgcolor=".$bgcolor.">";

                  for($e=0;$e<$l;$e++){

                         echo "<td>";

                         echo $e+$i*10;

                         echo "</td>";

                  }

                  echo "</tr>";

           }

           echo "</table>";

    }

    ?>

    Php处理拼接html时

    $res .= “<h2 id=”download”</h2>”;会报错需要转义双引号

    $res .= “<h2 id=”download”</h2>”;

    或者

    $res .=<<<HTMLSTR

    <h2 id=”download”</h2>

    HTMLSTR;

    Extra函数可以把数组变成变量

    POST简单过滤

    function mysqlClean($data){
        return (is_array($data))?array_map(mysqlClean, $data):mysql_real_escape_string($data);
    }

    php中计算二维数组中某一元素之和

    [0] => array(5) {

          ["id"] => string(2) "11"

          ["name"] => string(5) "1.jpg"

          ["suffix"] => string(3) "jpg"

          ["url"] => string(29) "./Uploads/1/5292f55d208e8.jpg"

          ["size"] => string(6) "715895"

        }

        [1] => array(5) {

          ["id"] => string(2) "12"

          ["name"] => string(22) "minisite数据库.docx"

          ["suffix"] => string(4) "docx"

          ["url"] => string(30) "./Uploads/1/5292f5606a52c.docx"

          ["size"] => string(5) "16667"

        }

    要计算size的和

    echo array_sum(array_map(create_function('$val', 'return $val["size"];'), $arr));
    或者
    echo array_sum(array_map(function($val){
    return $val['size'];}, $arr));

    计算多个元素之和

    $sum = 0;
    foreach($arr as $item){
      $sum += (int) $item['size'];
    }

    PHP使用时间strtotime函数需要设置时间区,否则本地产生的时间戳不正确。

    PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入,格林威治标准时间和北京时间大概差8个小时左右

    //foreeach 代替for

    function flo($a) {

        foreach (range(1, $a) as $v) {

            echo "<div style='height: 50px;", $v * 50, "px;background-color: black'></div>";

        }

    }

    flo(8);

    三、

    $_SERVER[‘REMOTE_ADDR’]时,如果是本机结果是“::1”

    五、require 当前目录的文件,用require ‘/conf/ad.php’错误(在虚拟主机IIS上status500错误),必须用’require ’conf/ad.php’;

    有的程序安装提示mb_convert_encoding()

    编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器

    php 输出乱码解决方案

    header("content-type:text/html;charset=utf-8");

    $test3 = ['a'=> 1? 'a':'b']; //'a'=>'a'
    $test3 = ['a'=> 0? 'a':'b']; //'a'=>'b'
    

    经常会遇到这种情况

    $a = '';
    if($b == true){
    $a = 'abc';
    }
    if($a){X} //个人觉得前四行完全可以简化成 $a = $b == true ? 'abc' : '';

    有这个需求

    $a = [
      ['field'=>[‘a'=>'b'],XXX],
      ['field'=>[‘g'=>'h'],XXX],
      ['field'=>[‘m'=>'n'],XXX]
    ];

    想要通过 $a 得到 "a as b,g as h,m as n"的字符串,用作数据相关操作,我是这么干的

    $field = implode(',', array_map(function ($val) {
                    return $this->_fieldMeta($val[0]) . ' as ' . $this->_fieldMeta($val[1]);
                }, array_column($a, 'field')));

     连表 拼接字符串时候用这个方法,(不确定是否最优)

    implode(',',array_map(function($val){return 'b.'.$val;},$levelsName))
    dump($vars);
    dump(http_build_query($vars));
               
    array_walk($vars, function (&$value, $key) {
        $value = $key . '=' . $value;
        });
    $vars = implode('&', $vars);
    dump($vars);

    看手册发现几个相似的函数

    parse_str

    <?php
    $str = "first=value&arr[]=foo+bar&arr[]=baz";
    parse_str($str);
    echo $first;  // value
    echo $arr[0]; // foo bar
    echo $arr[1]; // baz
    
    parse_str($str, $output);
    echo $output['first'];  // value
    echo $output['arr'][0]; // foo bar
    echo $output['arr'][1]; // baz

    extract

    <?php
    /* 假定 $var_array 是 wddx_deserialize 返回的数组*/
    $size = "large";
    $var_array = array("color" => "blue",
                       "size"  => "medium",
                       "shape" => "sphere");
    extract($var_array, EXTR_PREFIX_SAME, "wddx");
    
    echo "$color, $size, $shape, $wddx_size
    ";

    list

    list($name,$value) = explode('=', $i, 2)
    var_dump('' == null); //true
    var_dump('0' == null); //false
    var_dump(' ' == null); //false

    计算1-100和

    函数帝

    array_sum(range(1,100));

    自己的方法,不确定是否最优,看公司的程序用的是 explode后判断count然后确定删除字符串中是否有','方法

    删除字符串中某一数字

    echo '<pre>';
    $a = '1,2,3,4,5';
    var_dump($a);
    
    $b = 3;
    $tradArr = explode(",", $a);
    unset($tradArr[array_search((string)$b, $tradArr)]);
    $result = implode(',',$tradArr);
    
    var_dump($result);

    小技巧

    $f = '9';
    $f .= ($f == '' ?: ',').'9';
    var_dump($f); //输出的是19

    正确的方法是

    $f = '9';
    $f .= ($f == '' ? '': ',').'9';
    var_dump($f);

    原来三目运算符

    $output = $value ? $value : 'No value set.';
    《===$output = $value ?: 'No value set.';

    去除‘[abcdefg]'字符串首位字符

    以前都是这么干的 rtrim(ltrim($a, '['), ']')

    也可以这么干$a[0] = $a[length($a) - 1] = '';

    php7.1后可以这么干 $a[0] = $a[-1] = '';

    for($i=0;$i<5;$i++){
        echo 'M';
        if(1){
            echo '-';
            if($i==2) continue;
            echo $i;
        }
        echo '<br />';
    }

    $a = new AAA();

    $b = array(&$a,’123’);

    设置$b[0] = ‘###’,

    var_dump($b[0])显示 &string 类型

    想要完全替换$b[0]需要

    Unset[$b[0]];$b[0]=’###’;

    var_dump($b[0])显示 string 类型

    看手册时

    http://php.net/manual/zh/function.constant.php

    不知道constant的意义在哪,一下没理解过来

    通常输出常量可以直接用例如

    echo __NAMESPACE__;

    但是如果常量名不确定或者说时在变量中时就用到constant()了

    define('GP','hao GP');
    $a = 'GP';
    echo $a;
    echo '<br>';
    echo constant($a);

    连续操作时候

    想要获得['abc','def'] 数组'abc‘

    (db('会员')->where(array('编号'=>$saleData['编号']))->column($v))[0]

    PHP计算1-100和优雅做法

    //一
    function getSum($n)
    {
      return $n == 1 ? $n : $n + getSum($n-1);
    }
    getSum(100);
    
    //二
    array_sum(range(1,100));
  • 相关阅读:
    Spring Boot重定向的使用方法
    Jmeter性能测试之Monitor监控(SSHMon Samples Collector)
    Jmeter性能测试之分布式(五)
    Jmeter性能测试之Monitor监控(四)
    Jmeter性能测试之关联(三)
    Jmeter性能测试之参数化(二)
    JVM 内存溢出(转载~)
    MySql workbeach 更改侧边栏大小
    Mybati example generatorConfig.xml 配置详解
    Rvm 进行gem安装时必须输入密码Your user account isn't allowed to install to the system RubyGems 解决方案
  • 原文地址:https://www.cnblogs.com/8000cabbage/p/7429937.html
Copyright © 2011-2022 走看看