我有如下所示的陣列:從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