今天在写一个给第三方同步数据的接口时遇到一个这种情况,我有一大坨数据,但是第三方只需要其中的几个而已,不及思索的就开始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; }
时间: 2024-10-12 09:26:49