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;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));
PHP杂技(一)的更多相关文章
- 杂技之sharpdevelop调试aps.net
背景: 本人笔记本电脑不给力,vs打开实在太慢,因此考虑使用sharpdevelop,但sharpdevelop有点麻烦事,就是不支持asp.net的调试,为解决此问题,本人在此杂技一把了 方案一: ...
- 洛谷 P1842 奶牛玩杂技 题解
P1842 奶牛玩杂技 题目背景 Farmer John 养了N(1<=N<=50,000)头牛,她们已经按1~N依次编上了号.FJ所不知道的是,他的所有牛都梦想着从农场逃走,去参加马戏团 ...
- [洛谷P1842] 奶牛玩杂技
题目类型:贪心+证明,经典题 传送门:>Here< 题意:有\(N\)头奶牛,每个奶牛有一个重量\(W[i]\),力量\(S[i]\).定义每个奶牛的压扁程度为排在它前面的所有奶牛的总量之 ...
- Node 杂技
1.关于require 当文件夹a中含有index.js时,在b.js中如果有require("文件夹a的路径"),则将会自动执行index.js的语句
- 简单工具 & 杂技
图片压缩: 腾讯智图(http://zhitu.isux.us/) 手机的所有尺寸大小规范: http://screensiz.es/phone 需求: 移动端宽高一致的盒子(因为移动端屏幕宽度不一样 ...
- Linux杂技
挂载光盘 mkdir /mnt/cdrom #建立挂载点 mount /dev/cdrom /mnt/cdrom/ #挂载光盘 更换YUM源: cd /etc/yum.repos.d/ 使网络yum源 ...
- 关于html的一些杂技
html预定义字符指的是 :< > html实体指的是 $amp 等 php中htmlspeciachar()就是讲html预定义字符转换成html实体. 浏览器渲染时,会将html实 ...
- JS杂技之无中间变量的值交换方式
从http://www.cnblogs.com/liuyitian/p/4081517.html#3074553看到一种无中间变量的值交换方式,具体如下: var a = 1;var b = 2;a ...
- ThinkPHP5杂技(二)
不要使用数据库查询嵌套 if (!$listA = Db::name('coin') ->field('id,symbol') ->where('id', 'IN', logic('All ...
- PHP杂技(二)
php array_merge($a,$b)与 $a+$b区别 array_merge 数字键名会被重新编号,what's '...' $data = [[1, 2], [3], [4, 5]]; v ...
随机推荐
- COGS 1215. [Tyvj Aug11] 冗余电网
★ 输入文件:ugrid.in 输出文件:ugrid.out 简单对比时间限制:1 s 内存限制:128 MB TYVJ八月月赛提高组第2题 测试点数目:5 测试点分值:20 --内存 ...
- coredata栈
上下文包含所有信息 NSManagedObjectModel The NSManagedObjectModel instance describes the data that is going to ...
- hdparm - 获取/设置硬盘参数
总览 hdparm [ -a [扇区数] ] [ -A [0|1] ] [ -c [芯片组模式] ] [ -C ] [ -d [0|1] ] [ -f ] [ -g ] [ -i ] [ -k [0| ...
- C07 模块化开发信息管理系统案例
目录 需求分析 问题分析 开发阶段 需求分析 总体需求 学员信息管理系统支持以下功能 增加学员信息功能 删除学员信息功能 查询学员信息功能 修改学员信息功能 输出所有学员信息功能 退出系统 其他需求 ...
- Luogu [P3367] 模板 并查集
[模板]并查集 题目详见:[[P3367][模板]并查集] (https://www.luogu.org/problemnew/show/P3367) 这是一道裸的并查集题目(要不然叫模板呢) 废话不 ...
- [bzoj]1930 pacman吃豆豆
Description 两个PACMAN吃豆豆.一开始的时候,PACMAN都在坐标原点的左下方,豆豆都在右上方.PACMAN走到豆豆处就会吃掉它.PACMAN行走的路线很奇怪,只能向右走或者向上走,他 ...
- centos启动流程
centos6启动流程 1.主板,post加电自检,检查硬件环境 2.主板选择一个硬盘进行引导,执行mbr446 grub stage1 3.grub stage1.5 加载/boot分区文件系统驱动 ...
- 【markdown】图片的处理
1st: ![tip](link) 2ed: ![tip][id] [id]:base64string 本地图片 先把本地图片文件转换成base64位编码 然后把 link 替换成生成的base64编 ...
- 2018 Python开发者大调查:Python和JavaScript最配?
在2018年秋季,Python软件基金会与JetBrains发起了年度Python开发者调查. 报告的目的是寻找Python领域的新趋势,帮助开发者深入了解2018年Python开发者的现状. 该报告 ...
- STM32CUBEMX入门学习笔记3:HAL库以及STM32CUBE相关资料
微雪课堂:http://www.waveshare.net/study/article-629-1.html 之前的正点原子的例程资料 硬石科技stm32cube: 链接:https://pan.ba ...