2012-03-05 63 views
1

您好,我有php多維數組我想從每個數組中刪除索引,我的數組是這樣最好的方法,從所有的數組中刪除特定指數在多維數組PHP

Array 
(
    [0] => Array 
     (
      [ProfilePrivacySettingDefaultID] => 1 
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 

    [1] => Array 
     (
      [ProfilePrivacySettingDefaultID] => 2 
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 

    [2] => Array 
     (
      [ProfilePrivacySettingDefaultID] => 3 
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 

    [3] => Array 
     (
      [ProfilePrivacySettingDefaultID] => 4 
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 
    ); 

我想指數ProfilePrivacySettingDefaultID從所有陣列,因此最後的結果會是這樣

Array 
    (
     [0] => Array 
      (
       [UserType] => 2 
       [Type] => 1 
       [EntityID] => 0 
       [PrivacySettingPublic] => 1 
       [PrivacySettingElephantiUser] => 1 
       [PrivacySettingFriend] => 1 
       [IsValid] => 1 
       [CreatedOn] => 1330580809 
       [CreatedBy] => 0 
       [UpdatedOn] => 0 
       [UpdatedBy] => 0 
      ) 

     [1] => Array 
      (
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 

    [2] => Array 
     (
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 

    [3] => Array 
     (
      [UserType] => 2 
      [Type] => 1 
      [EntityID] => 0 
      [PrivacySettingPublic] => 1 
      [PrivacySettingElephantiUser] => 1 
      [PrivacySettingFriend] => 1 
      [IsValid] => 1 
      [CreatedOn] => 1330580809 
      [CreatedBy] => 0 
      [UpdatedOn] => 0 
      [UpdatedBy] => 0 
     ) 
    ); 

什麼是做到這一點的最好辦法,非常感謝你..............

回答

3

您可以輕鬆地使用array_map要做到這一點,與unset刪除索引。例如:

$your_array = array_map(
    function($array) { 
    unset($array['ProfilePrivacySettingDefaultID']); 
    }, 
    $your_array 
); 
+0

爲什麼這個表決和標記爲接受的答案。它不起作用。該數組需要返回,否則$ your_array將只是空的 – TarranJones 2015-09-03 09:14:18

-1

我只想遍歷數組並取消設置特定的值超過:

foreach($array AS $value){ 
    unset($value['ProfilePrivacySettingDefaultID']); 
} 
+2

與@Sudhir相同,您需要通過引用傳遞$ value,使用&$ value。 – 2012-03-05 08:55:41

0

我會說一個foreach將是這樣做的最有效的方法。

所以無論

foreach($user_array as $key => $value){ 
    unset($user_array[$key]['ProfilePrivacySettingDefaultID']); 
} 

foreach($user_array as &$value){ 
    unset($value['ProfilePrivacySettingDefaultID']); 
} 

array_map也只是做的比需要更多的工作,併爲您的array_map回調僅僅是適得其反使用匿名函數。

$user_array = array_map(
    function($value){ 
     unset($value['ProfilePrivacySettingDefaultID']); 
     return $value; 
    }, $user_array 
); 

function array_map ($callback , $array){ 

    foreach($array as $key => &$value){ 

     $value = call_user_func($callback, $value); 
     // which is equal to 
     /*function my_callback($value){ 
      unset($value['ProfilePrivacySettingDefaultID']); 
      return $value;   
     } 
     $value = my_callback();*/ 
    } 
    return $array; 
}