bai_jimmy

导航

PHP-数组函数

今天在写一个给第三方同步数据的接口时遇到一个这种情况,我有一大坨数据,但是第三方只需要其中的几个而已,不及思索的就开始foreach

 

$ret = array();
foreach ($needParams as $pk) {
    if (isset($params[$pk])) {
        $ret[$pk] = $params[$pk];
    }
}

由于还需要处理一些特殊参数,看着很不舒服

 

想了想php数组函数是很强大的,于是改成

$needkey = array('uid', 'cuid');
$params = array('uid' => 123, 'cuid' => 1234567, 'other' => '...');
$ret = array_intersect_key($params, array_flip($needkey));

 

改成

    /**
     * _packParams
     * 
     * @desc 根据配置从公共参数中摘取传递参数
     */
    private function _packParams($params, $needKey) {
        $ret = array_intersect_key($params, $needKey);
        //个别参数特殊处理
        if (isset($ret['uid'])) {
            $ret['cuid'] = $ret['uid'];
            unset($ret['uid']);
        }
        if (isset($needKey['puid'])) {
            $passSrv = $this->getInstance('Util_Passport');
            $uid = $passSrv->getUidFromCookie($params['cookie']);
            $ret['uid'] = null === $uid ? '' : $uid;
        }
        return $ret;
    }

 

posted on 2015-04-15 23:38  bai_jimmy  阅读(131)  评论(0编辑  收藏  举报