示例的两种写法,哪种更优雅嘞,或者大佬们有更好的写法- -
前置说明
首先有一个非常大的关联数组
$replace_data = array(
1 => 11,
3 => 33,
// 后面还有很多
);
过滤并替换下面这个二维数组
$input = array(
array(1, 0),
array(1, 2),
array(2, 0),
array(3, 1),
array(3, 4),
);
对于每一个子数组按以下规则过滤
- index=0 的数据如果不在 replace_data 里,丢弃
- index=1 的数据如果不为 0,并且不在 replace_data 里,丢弃
- 根据 replace_data,修改 index=0 的数据,若 index=1 的数据不为 0,也得修改
期待的过滤结果
$output = array(
array('11', '0'),
array('33', '11'),
);
示例代码
示例代码 1
$output = array();
foreach ($input as $v) {
if (empty($replace_data[$v[0]])) {
continue;
}
if (($v[1] !== 0) && empty($replace_data[$v[1]])) {
continue;
}
$v[0] = $replace_data[$v[0]];
if ($v[1] !== 0) {
$v[1] = $replace_data[$v[1]];
}
$output[] = $v;
}
示例代码 2
$output = array();
foreach ($input as $v) {
if (empty($replace_data[$v[0]])) {
continue;
}
if (($v[1] !== 0) && empty($replace_data[$v[1]])) {
continue;
}
$v[0] = $replace_data[$v[0]];
if ($v[1] !== 0) {
$v[1] = $replace_data[$v[1]];
}
$output[] = $v;
}