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;
}
上一篇:Java工具类(util) 之01- 数学运算工具(精确运算)


下一篇:ubuntu中安装Rstdio无法切换中文输入法