你好创造者

FluentInterface

  最近时不时的会去学习下设计模式,在DesignPatternsPHP学习中,发现一个特别喜欢的设计模式————FluentInterface,我找不到它的翻译。我个人把它理解为连贯操作/级联操作。在实际中,我发现ThinkPHP和Typecho中均使用了这种模式,并且都在数据库操作类使用这种模式进行连贯操作。于是我用这个模式编写了一个计算器类Calculator,代码如下:

阅读剩余部分......

完善array_column,我的array_column

class Util
{
    /**
     * 获取多列的数组
     *
     * @access protected
     * @param array $array    待处理数组
     * @param array $key      期望键索引
     * @param boolean $strict 是否严格(每个数组满足所有键索引存在)
     * @return array          结果集
     */
    protected function _arrayColumns(array $array, array $key, $strict = false)
    {
        $result = array();
        foreach ($array as $val) {
            $temp = array();
            foreach ($key as $value) {
                if (array_key_exists($value, $val)) {
                    $temp[$value] = $val[$value];
                }
            }
            if (!$strict || ($strict && count($temp) == count($key))) {
                $result[] = $temp;
            }
        }
        return $result;
    }
    
    /**
     * 获取给定索引的数组
     *
     * @access public
     * @static
     * @param array $array    待处理数组
     * @param mixed $key      期望键索引
     * @param boolean $strict 是否严格(每个数组满足所有键索引存在),仅对多列生效
     * @return array          结果集
     */
    public static function arrayColumn(array $array, $key, $strict = false)
    {
        //多列数组,多列处理
        if (is_array($key) && count($key) > 1) {
            return $this->_arrayColumns($array, $key, $strict);
        }
        $key = is_array($key) ? $key[0] : $key;
        if (function_exists('array_column')) {
            return array_column($array, key);
        }
        $result = array();
        foreach ($array as $val) {
            if (array_key_exists($key, $val)) {
                $result[] = $val[$key];
            }
        }
        return $result;
    }
}
需求决定了我的改造
假如你有其他需求或者更好的建议,请不要吝啬,联系我

年轻付出代码,array_multisort()技能得到

  在工作中,遇到二维数组排序的问题,然后我自己手撸,结果发现怎么调试都出错,更何况效率的问题。最后在别人的帮助下,找到了过往使用的工具方法,因此就去翻看array_multisoort()函数说明,同时发现,公司曾经的封装略显不足,因此我运用之前封装的_array_column函数,成功为二维数组排序,代码如下:

阅读剩余部分......

从一串字符中取出唯一的数值

  上周在实习中,我得到了一个任务,而这个任务需要解析数据同时文件中的只存在时间,而无日期,日期则被保存在文件名中,例如:server20141210,于是我想到了intval(),但是经过实验发现,输出0。

  这让人很纳闷,intval()函数不是从字符串中取出数值吗?于是翻看PHP官方文档,在Return Values中看到:Strings will most likely return 0 although this depends on the leftmost characters of the string,这告诉字符串中必须左边第一个字符为数值才能被转换为整型数,因此达不到我需要的目的。

阅读剩余部分......