标签 代码段 下的文章
通过static关键字限制一个类最多只能创建出一个实例化对象
<?php
class Single {
private static $element = NULL;
private function __construct() {
echo "Hello World! ";
}
static function get() {
if(is_null(self::$element)) {
self::$element = new self();
echo 'I will never give up. ';
return self::$element;
}
}
}
$single = Single::get();
$double = Single::get();
核心在于static
是属于类而不是属于对象的,所以改变值会反应到类。设定初值为NULL
,在方法里赋值,而如果是NULL
,在方法里调用,赋为new self()
在外界就变成了$single = new Single()
,而$double
调用时什么都不会发生了,此时静态变量已经不是NULL
了不会进入判断体
PHP 清除数组中的空白元素
这个函数就应用于PHP实现冒泡排序
function clean_empty_element($array) {
foreach ($array as $key => $value) {
if ($value == '') {
unset($array[$key]);
}
}
$array = array_values($array);
return $array;
}
关于它的拓展:
- 清除和指定元素完全相同的数组元素
- 清除带有指定字符串的数组元素
PHP 检查表单是否提交的两种方法
QAQ问到了第二种方法终于不用一直使用<input type="hidden" name="shot" value="shot">
了
第一种就是我上面用的,也可以直接用submit
,但好像……我很喜欢写hidden
啊……
然后:if(!empty($_POST['shot']))
第二种更简洁:if ($_SERVER['REQUEST_METHOD'] === 'POST')
后者运用于:PHP检查IP是否在指定范围内
PHP 计算两个文件的相对路径
没错这是我目前的得意之作之一,还特地写了CSS,虽然不怎么好……
所谓使尽浑身解数……
打了草稿,嗯虽然估计过会儿我自己都要看不懂了。(思路,{}
的部分在写下来之后发现了共同点就合并了)
删除 . 和空白数组
比较相同元素,到不同时中断 统计b还有多少元素 不同元素的多少决定了..个数 按序输出不同元素
count数组中元素的大小,取小的那一个作为比较次数 比较一个元素删除一个元素
{如果比完完全符合 则如果b小 返回a剩余元素 b大 返回差集数组计算元素数返回../数
如果不完全符合,则b剩余元素替换为..后加上a剩余元素}
b剩余元素变为../后输出a剩余元素
如果输入文件名a/..
为了找相对路径规律还写了不同的……
PHP 使用list()实现不用第三个变量交换数字
一直以来都用第三个变量过渡来交换两个数,那么如何节省变量呢(个人认为……这是用途OTZ变量多感觉很乱啊)
其实真的超简单OTZ
list($a, $b) = array($b, $a);
list()
的功能是把数组中的一些值赋给变量
关于list()
的扩展阅读:http://www.php.net/manual/zh/function.list.php
PHP 编写函数实现千位分组
这个,其实PHP还是有自带函数的,number_format()
扩展阅读:http://www.w3school.com.cn/php/func_string_number_format.asp
不过有的时候我真的是太依赖自带函数了,可能其他语言没那么强大的函数库就死了吧,所以这里还是需要动动脑子的,正好弥补代码量不足的问题。
缺点在于:小数死……(这个缺点有空修复好了= =目前正在赶进度……)
PHP 一个函数实现字符串反转
这其实还是一道题目OTZ当然不用在意这些细节,写出来之后它已经不算是题目了吧。
但我写的函数有个缺点,那就是它是以length
分割的(因为还不会正则表达式
),在PHP 语法糖一枚中提到过:
length = 1
代表 截取一个字节,所以对于中文不适用。
2014年02月02日更新:PHP 实现中文字符串截取无乱码修复中文支持
中文截取就会出现乱码问题。
补刀:如果不是题目的话可以使用官方自带函数strrev()
扩展阅读:http://www.w3school.com.cn/php/func_string_strrev.asp
先来看一下函数部分吧。
PHP Call-time pass-by-reference has been removed 错误解决
依旧是做到题目的时候发现了这个问题,可能是PHP版本不同引发的问题,然后默默的搜索了一下。
按引用传参,其实只用在定义时指定"&"
即可,调用时不用写,只不过一直以来都这么写也没报过错,看来是5.4版增强了检查,不允许这种调用了。
调用时去掉"&"
,只保留方法定义中的"&"
,这次一切OK了。
Box-shadow实现常用阴影效果
在text的三个以前忽视的属性(尤其阴影)中我提到了关于文字阴影的问题,相关常用效果W3School把它称作:霓虹灯效果。很显然对IE的支持不好。
如果是text,则:
text-shadow:0 0 3px #FF0000;
这里的演示在W3School有