【发布时间】:2023-03-29 05:44:02
【问题描述】:
我有一个返回房间的类。我有几个方法 ( 4-5 ),它们都提取用户可以指定给此 API 的“可用”参数以返回唯一结果。
在其中一种方法中,我正在检查用户提供的“建筑物”字符串是否实际匹配“有效”建筑物。为了做到这一点,目前我正在做:
$buildings = $this->_getBuildings();
$buildingIds = array();
foreach ( $buildings as $building ) {
$buildingIds[] = $building['id'];
}
$valid = true;
foreach ( $userPassedBuildingValues as $value ) {
if ( !in_array( $value, $buildingIds ) ) {
$valid = false;
$this->addError();
}
}
我正在寻找一种方法来重构它,这样我就不必在每次进行比较时遍历所有构建元素并创建一个新数组。是否有任何数组映射/搜索功能可以使这更容易?
我正在考虑重构 getBuildings 以使用可选参数来返回 ID 列表,但这会“困扰”该函数,而且我认为它不会像现在这样“纯粹”。
编辑#1:第一个想法是创建一个方法,该方法采用“键”并从数组中返回这些键的串联数组。例如,
$buildings = $this->_getBuildings();
$buildingIds = $this->_getAllValues( 'id', $buildings );
function _getAllValues( $key, $array ) {
$return = array();
foreach ( $array as $rowKey => $row ) {
if ( $rowKey == $key )
$return[] = $row[$key]
}
return $return;
}
但也许有一种不同的、更简洁的方法?我会为至少 4-5 个不同的功能做同样的事情。
注意:数组的深度不会超过一,所以不用担心深度嵌套的数组。
【问题讨论】:
标签: php arrays refactoring