我有如下所示的阵列:从2D阵列中删除键的最简单方法?
array(
0 => array(
'key1' => 'a',
'key2' => 'b',
'key3' => 'c'
),
1 => array(
'key1' => 'c',
'key2' => 'b',
'key3' => 'a'
),
...
)
我需要一个函数来获得仅包含(变量)的阵列的键的数量,即reduce_array(阵列(“KEY1”,“KEY3”)) ;应该返回:
array(
0 => array(
'key1' => 'a',
'key3' => 'c'
),
1 => array(
'key1' => 'c',
'key3' => 'a'
),
...
)
这样做的最简单方法是什么?如果可能,没有像array_filter或array_map这样的其他辅助函数,因为我的同事已经在使用太多的函数来抱怨我。
源数组将始终具有给定的键,因此不需要检查是否存在。
如果这些值是唯一的,则奖励分数将始终相互关联,这意味着如果key1具有值a,那么其他键将始终具有值b)。其作品,但
我目前的解决方案是相当笨拙(连名字是可怕的,但不能找到一个更好的):
function get_unique_values_from_array_by_keys(array $array, array $keys)
{
$result = array();
$found = array();
if (count($keys) > 0)
{
foreach ($array as $item)
{
if (in_array($item[$keys[0]], $found)) continue;
array_push($found, $item[$keys[0]]);
$result_item = array();
foreach ($keys as $key)
{
$result_item[$key] = $item[$key];
}
array_push($result, $result_item);
}
}
return $result;
}
加成:
PHP版本5.1.6是。
很不错, @jemfinch。 – karim79 2010-04-06 13:34:03
非常好的解决方案,看起来就像我需要的,但我会在接受之前等待其他可能的解决方案。 – dbemerlin 2010-04-06 13:37:45