2014-02-20 50 views
0

值i有這樣除去特定鍵=>從陣列的PHP

Array 
(
    [0] => Array 
     (
      [to_id] => 3 
      [email] => [email protected] 
      [user_id] => 3 
     ) 

    [2] => Array 
     (
      [to_id] => 2 
      [email] => [email protected] 
      [user_id] => 2 
     ) 

    [4] => Array 
     (
      [to_id] => 5 
      [email] => [email protected] 
      [user_id] => 5 
     ) 

) 

,我想獲得陣列像下面

Array 
(
    [0] => Array 
     (
      [email] => [email protected] 
      [user_id] => 3 
     ) 

    [2] => Array 
     (
      [email] => [email protected] 
      [user_id] => 2 
     ) 

    [4] => Array 
     (
      [email] => [email protected] 
      [user_id] => 5 
     ) 

) 

i。由用foreach循環得到這個工作一個陣列,但我想做單陣列功能,請問是否可以,請幫忙

+0

你最有可能能夠與array_map實現這一目標或array_walk在一起使用與閉合 – mic

+0

我只想舊數組複製到一個新的數組ommiting該密鑰在複製過程 –

回答

4
$array = array_map(
    function (array $ar) { return array_diff_key($ar, array_flip(array('to_id'))); }, 
    $array 
); 

沒有一個單一的功能可以做到這一點。你必須寫一些代碼。您也將始終需要遍歷數組。你只能以不同的方式穿戴這個循環,並且以不同的方式穿戴關鍵的動作。我不一定認爲任何事情都比直接循環更高效或更清晰。但是,好吧,如果你正在尋找更有趣的東西,那就去看看上面的內容吧。

+0

這是不行的工作,但我需要一些像unset($ array ['to_id']);將循環並移除整個陣列 –

+0

沒有這樣的東西存在。你可以寫一個像'unset_key($ array,'to_id')'這樣的函數。但它默認情況下不存在。 – deceze

+0

謝謝,如何通知php社區創建一些預定義的功能,以便在下一個版本中這樣做 –

0
//This is the array name in which your data is stored. 
$my_array = array($array_data); 

// now lets get one level inside the array 
foreach($my_array as $key => $value){ 

// ok now unset un-wanted index from the array into a temporary array 
unset($value['to_id']); 

// overwrite our temporary array to original array keeping the keys same as before. 
$my_array[$key] = $value; 
//Thats it your Problem Solved :) 
} 

echo "<pre>"; 
print_r($my_array); 
echo "</pre>"; 
+0

我的問題不是與foreach –

+0

這可能不是最好的方法,但它的工作。儘量避免不相關的細節,如「獎金」部分。 –