示例的两种写法,哪种更优雅嘞,或者大佬们有更好的写法- -
首先有一个非常大的关联数组
$replace_data = array(
1 => 11,
3 => 33,
// 后面还有很多
);
过滤并替换下面这个二维数组
$input = array(
array(1, 0),
array(1, 2),
array(2, 0),
array(3, 1),
array(3, 4),
);
对于每一个子数组按以下规则过滤
$output = array(
array('11', '0'),
array('33', '11'),
);
$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;
}
$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;
}
1
lovecy OP 不好意思,第二个代码放错了,放成一样的了,但是无法 append,不知道为啥。
两个我感觉都很不优雅,寻求一个更优雅的写法 |
2
v11exboy 2021-01-14 17:52:47 +08:00
优雅?粗暴就完了!
$output = array(); foreach ($input as $value) { if (!empty($replace_data[$value[0]]) && (!$value[1] || !empty($replace_data[$value[1]]))) { $output[] = array($replace_data[$value[0]], $value[1] ? $replace_data[$value[1]] : 0); } } |