文章标签 » php

PHP中直接读取zip中的指定文件

碉堡。。不愧是世界上最好的语言,只需要一个函数:

file_get_contents('zip://test.zip#test.txt');

来自:http://stackoverflow.com/questions/10420112/how-to-read-a-single-file-inside-a-zip-archive

获取两组数据的固定乱序组合

修改自一个矩阵z形遍历代码,改成从中间开始遍历,乱序效果更好

function matrix_mess_order($rows, $cols) {
    $cuts = $rows + $cols - 1;
    $mid  = (int)($cuts/2);
    $result = array();
    for ($i = 0; $i < $cuts; $i++) {
        if ($i % 2 == 0) {
            $j = $mid - (int)($i % $mid);
        } else {
            $j = $mid + (int)($i % $mid);
        }
        $row_extra = ($j + 1) > $rows ? ($j + 1 - $rows) : 0; 
        $col_extra = ($j + 1) > $cols ? ($j + 1 - $cols) : 0; 
        $len = ($j + 1) - $row_extra - $col_extra;
        $topright_row = $col_extra;
        $topright_col = $j - $col_extra;
        $leftbotm_row = $j - $row_extra;
        $leftbotm_col = $row_extra;
        if ($j % 2 == 0) {
            while ($len -- > 0) {
                $result[] = array($leftbotm_row - $len, $leftbotm_col + $len);
            }
        } else {
            while ($len -- > 0) {
                $result[] = array($topright_row + $len, $topright_col - $len);
            }
        }
    }
    return $result;
}

PPJ回忆录

个人以为:学一门脚本很容易,但是学几门就是一个痛苦的事,因为我经常把他们搞混。。

于是我下决心写一个能够帮我理清楚的文档,我命之为《PPJ回忆录》,从周5写到今天,精疲力尽,剩下OO和正则部分没写,我决定先歇会~

毫不客气的说,对于同时学里面任意两门语言的同学,这个文档都会对你有帮助。

———–
post by gmail~

一段用于辅助gettxt翻译的vim配置

看图吧,用得到的话会觉的简直太爽了,^_^
使用方法:
打开需要标记的文件,输入命令 :GettextMarkStart,开启辅助
选择需要翻译的文本
screenshot_092.png
按_出来提示菜单,选择完成标记
screenshot_093.png

配置:http://code-of-emptyhua.googlecode.com/svn/trunk/vim/addgettextmark.vim

———–
post by gmail~

php整型溢出导致的小问题~

今天把一直本地测试的php程序放到外网的机器跑(64位系统),没想到一个纯算数值的算法竟然得到不一样的结果,最后锁定在一个求模的操作上:$i % 4, $i在本地和server上打印出来都是434807526976, 但是求出来的结果却不一样~

原因是:
php的整型最大值为2147483647(32位系统上), 当数值赋值超过这个最大值时,变量便自动成为浮点型. 所以虽然打印出来一样,但本地打印的是一个是浮点型的$i,而server上是64位系统,整型最大值达到9223372036854775807  …. $i依然是一个整型.

取模运算的结果不一样是因为php在对数值取模运算时会把浮点数转换为整型再取模(这点就不如js了,js是可以对浮点取模运算地~)

所以本地32位系统运行的其实是: ((int) $i) % 4 即 512559680 % 4

解决方法 : 最后为了保持与其他平台的一致,强制在64系统也”溢出” : ($i & 0xFFFFFFFF) % 4

————————————————

php也是一个比较无厘头的东西~