逻辑运算符 &&和& ||和|的部分区别
返回结果类型不同,
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;width:", $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\n";
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));