从多维数组PHP中的所有数组中删除特定索引的最佳方法


best way to remove specific index from all arrays in a multidimentional array PHP

hi我在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
        )
    );

做这件事最好的方法是什么,非常感谢。。。。。。。。。。。。。。

您可以很容易地使用array_map来执行此操作,使用unset来删除索引。示例:

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

我认为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;
}

我只需要迭代数组并取消设置特定值:

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