2014-02-20 52 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

这可能不是最好的方法,但它的工作。尽量避免不相关的细节,如“奖金”部分。 –