一个更改 hosts 的 PHP 脚本

有这样一个需求,我有多个网址希望在不同的时候对应不同的 ip,如果一个个配 hosts,这工作显得有些繁琐。写了如下脚本来批量更改。

示例配置文件如下:

使用方法:

写完后,发现,这明明就是只需要一次查找替换就能完成的工作嘛

小心 foreach 中使用引用,否则可能数据出错

有实例代码如下:

 

运行,输出的结果却是:

 

不知道看官您看出问题没有,找这个问题花了我老长时间,foreach 里面对值使用使用后,loop 结束,值还存在,所以在 foreach 循环结束后应手动 unset 该变量。

改正后的 PHP 代码为:

 

php.net 上关于 foreach 里面使用引用的警告说明如下:

Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

PHP in_array 函数的一个问题

有如下代码:

会输出:

第 2 个输出与我们预想的不一样,为什么会出现这种情况呢?

in_array 函数在进行比较的时候,会先进行类型转换,字符串和数字进行比较,会将字符串转换为数字,而字符串被强制为数字 0,因此 in_array(0, array[‘abc’, ‘def’]); 为 TRUE

为了避免这种意外,可以在 in_array 函数添加第三个参数 in_array(0, array[‘abc’, ‘def], TRUE);,那么在比较的时候除了比较值还会比较类型。

storytlr 登录出现问题,删除 apc 后正常

昨天开始,安装在服务器上的 storytlr 出现问题,登录的时候,页面不给任何反馈,查看 apache 错误日志也没有错误产生,查看程序自带的错误记录,也没能看出任何问题。但是我本地也安装来一个 storytlr 正常运行,没有出现这个问题,代码都是一样的,按说不应该啊。于是我对比来一下本机和服务器 phpinfo() 的输出,发现服务器多加载一个 apc 扩展,抱着试一试的态度,我将服务器的 php-apc 扩展删除了,重启 apache2 服务,正常,搞定!不知道为什么会这样,我对 storytlr 代码不熟,对它使用的 zend framework 也没用过,还真有点没底呢,不过现在问题解决了就好。

为什么会出现这个问题呢?

CodeIgniter 控制器方法不能和控制器类名同名

我写了这样一段代码:

 

运行,无论怎样都有错,提示 $this 的 load, session 等属性不存在。找了半天才知道是存在与控制器类名相同的方法引起的。

但是为什么会是这样呢?有时间研究一下。

php 实现计数排序

算法还是很重要嘀~
直接贴代码:

 

今天又重新梳理了一遍,不能根据这个代码看出计数排序是稳定排序: