【发布时间】:2023-03-03 04:03:01
【问题描述】:
这里我有一个函数,可以从嵌套数组中删除一些键。 我怎样才能优化它以看起来更漂亮,也许更有效?
$data 为数组类型,包含以下内容:
$data = [
'0' => [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
],
'1' => [
'key1' => 'value4',
'key2' => 'value5',
'key3' => 'value6'
],
];
$column(s) 是数组类型,包含我想从这个数组数组中删除的键
$columns = ['key1', 'key2'];
而用PHP写的部分函数是:
***
$newData = [];
foreach ($data as $row) {
$newRow = array_diff_key($row,array_flip($columns));
array_push($newData, $newRow);
}
return $newData;
***
预期结果:
$data = [
'0' => [
'key1' => 'value1'
],
'1' => [
'key1' => 'value4'
],
];
该功能运行良好,但看起来很糟糕:D
【问题讨论】:
-
优化问题在codereview.stackexchange.com 上可能会更好,但请务必先通过tour 并通过help center 解决
-
在同一个数组中不能有两个
0键。数组键必须是唯一的。 -
你只能在循环外翻转
$columns数组一次 -
您可以将
array_push($newData, $newRow);替换为$newData[] = $newRow;,然后调用函数的开销将被消除 -
来看看你为什么要翻转你硬编码的数组?
标签: php function optimization multidimensional-array formatting