php array_merge($a,$b)与 $a+$b区别

array_merge 数字键名会被重新编号,what's '...'

$data = [[1, 2], [3], [4, 5]];
var_dump($data); // [[1, 2], [3], [4, 5]];
var_dump(... $data); // [1, 2, [3], [4, 5]];
var_dump(array_merge($data)); //[[1, 2], [3], [4, 5]];
var_dump(array_merge(... $data)); // [1, 2, 3, 4, 5];

php嵌套

<?php
function a(){
echo 'a';
function b(){
echo 'b';
function c(){
echo 'c';
}
}
}
// a();c(); //a
a(); b(); c(); //abc

必须先执行外部函数才能依次调用,直接调用b无返回结果;

<?php
if (!function_exists('a')) {
function a(){
echo 'in a';
}
}
function a(){
echo 'out a';
} a(); //'out a'
<?php
if (!function_exists('a')) {
function a(){
echo 'in a';
}
}
a(); //'in a'
<?php
return ['a'=>'b'];
function a($a){
var_dump($a);
}
a(include ./a.php); //['a'=>'b']

PHP数组相关:

$a = ['a' => 'b', 'c' => 'd'];
$a[] = ['e'=>'f'];
echo '<pre>';
var_dump($a);

//需求解析url,类似与bash
/**
* @param $url string "ab/{cd,ef,gh}/{ij,kl}"
* @return array ['abcdij','abcdkl','abefij','abefkl','abghij','abghkl']
*/
//总觉得有还有很大的优化空间 2017-12-20 13:47:17
function preUrl($url = "01/ab/{cd,ef,gh}/{ij,kl}")
{
static $result = [];
$pattern = '/{(\w+,)*(\w+)}/';
if (preg_match($pattern, $url, $matches)) {
$head = strstr($url, $matches[0], true);
$tail = substr(strstr($url, $matches[0]), strlen($matches[0]));
foreach (explode(',', rtrim(ltrim($matches[0], '{'), '}')) as $value) {
$tempUrl = $head . $value . $tail;
if (preg_match($pattern, $tempUrl, $matches)) {
preUrl($tempUrl);
} else {
$result[] = $tempUrl;
}
}
} else {
$result = [$url];
}
return $result;
}

处理字符串想通过换行符来分割成数组

explode('\r\n', $a); //错误
explode("\r\n", $a); //正确

php删除目录下所有文件和文件夹

    public function removePrizeData($attachPath = null)
{
$prizeDataPath = is_null($attachPath) ? Env::get('ROOT_PATH') . self::PRIZE_FILE_PATH : $attachPath;
if ($handle = opendir($prizeDataPath)) {
while (false !== ($file = readdir($handle))) {
if ($file == '.' || $file == '..') continue;
if (is_dir($prizeDataPath . '/' . $file)) {
$this->removePrizeData($prizeDataPath . '/' . $file);
rmdir($prizeDataPath . '/' . $file);
} else {
unlink($prizeDataPath . '/' . $file);
}
}
closedir($handle);
}
}

类似explode函数,但可以指定返回类型 2018-02-28 16:51:22

    /**
* foreach(explodeType(',', '1,2,3', 'int', [2]) as $value) dump($value);
* output: int(1)
* int(3)
* @param string $delimiter 切割符号
* @param string $string 被切割字符串
* @param string $valueType 返回的结果类型
* @param array $filter 过滤器,想要清洗的值,可以修改成闭包让功能更多
* @return \Generator
* @author GP 20180228
*/
static public function explodeType(string $delimiter, string $string, string $valueType = 'int', array $filter = [])
{
$loop = function () use ($string, $delimiter) {
static $begin = true;
if ($begin) {
$begin = false;
return strtok($string, $delimiter);
} else {
return strtok($delimiter);
}
};
$filter = function ($result) use ($filter) {
return in_array($result, $filter) ? true : false;
};
while (false !== $temp = $loop()) {
switch ($valueType) {
case 'int':
$i = (int)$temp;
if ($filter && true === $filter($i)) continue;
yield $i;
}
}
}

发现了一个php语法,可以对null取元素,结果也是null

var_dump(null['a'][0]['b']); ===>>> null

PHP杂技(二)的更多相关文章

  1. ThinkPHP5杂技(二)

    不要使用数据库查询嵌套 if (!$listA = Db::name('coin') ->field('id,symbol') ->where('id', 'IN', logic('All ...

  2. 杂技之sharpdevelop调试aps.net

    背景: 本人笔记本电脑不给力,vs打开实在太慢,因此考虑使用sharpdevelop,但sharpdevelop有点麻烦事,就是不支持asp.net的调试,为解决此问题,本人在此杂技一把了 方案一: ...

  3. 智课雅思词汇---二十五、-ate

    智课雅思词汇---二十五.-ate 一.总结 一句话总结:又是动词,又是名词,又是形容词 后缀:-ate ①[动词后缀] 表示做.造成.使之成....做...事等意义 hyphenate 加连字符 o ...

  4. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  5. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  6. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  9. MIP改造常见问题二十问

    在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...

随机推荐

  1. 动态生成带参数的html标签

     "<button onclick='watchClick("+'"'+row.BOXNO + '","'+ row.VOY_NO+'" ...

  2. lua调用java过程

    在cocos2dx框架中,有继承好的luaj文件来方便我们去使用lua调用java底层代码,注意:luaj只能使用在安卓平台下,如果在平台下使用,会出错, 所以使用前需要加平台判断,方法 如下: lo ...

  3. (转发)IOS动画中的枚举UIViewAnimationOptions

    若本帖转自(博客园·小八究):http://www.cnblogs.com/xiaobajiu/p/4084747.html 可怜目前天朝搜不到什么有价值的东西方便学习,在这里方便初学者. 首先这个枚 ...

  4. MFC 菜单编程 -- 总结

    菜单结构 一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项.对于菜单栏的子菜单,由左至右从0开始索引.对于特定的子菜单的菜单项,由上至下建立从0开始的索引.访问子菜单和菜单项,均可通过其索 ...

  5. 15Shell脚本—流程控制

    流程控制语句 尽管可以通过使用Linux命令.管道符.重定向以及条件测试语句编写最基本的Shell脚本,但是这种脚本并不适用于生产环境.原因是它不能根据真实的工作需求来调整具体的执行命令,也不能根据某 ...

  6. 不依赖Hibernate的万能BaseDao---模仿了Hibernate底层的原理

    今天写了个万能的BaseDao:有了这个BaseDao以后的Dao层直接继承这个BaseDao就能直接操作数据库了,增删改查,这是一个简易的Hibernate模型.写这个BaseDao的原因是最近在学 ...

  7. ccf 201712-3 Crontab(Python实现)

    一.原题 问题描述 试题编号: 201712-3 试题名称: Crontab 时间限制: 10.0s 内存限制: 256.0MB 问题描述: 样例输入 3 201711170032 201711222 ...

  8. paper:synthesizable finite state machine design techniques using the new systemverilog 3.0 enhancements 之 standard verilog FSM conding styles(三段式)

    Three always block style with registered outputs(Good style)

  9. json_encode() 避免转换中文

    json_encode() 避免转换中文 我们都知道,json_encode()可以将数据转换为json格式,而且只针对utf8编码的数据有效,而且在转换中文的时候,将中文转换成不可读的”\u***” ...

  10. 【php】instanceof

    instanceof 的使用还有一些陷阱必须了解.在 PHP 5.1.0 之前,如果要检查的类名称不存在,instanceof 会调用__autoload().另外,如果该类没有被装载则会产生一个致命 ...