лучший способ удалить конкретный индекс из всех массивов в многомерном массиве PHP - PullRequest
1 голос
/ 05 марта 2012

Привет, у меня есть многомерный массив в 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 ]

3 голосов
/ 05 марта 2012

Вы можете легко использовать array_map, чтобы сделать это, с unset, чтобы удалить индекс. Пример:

$your_array = array_map(
  function($array) {
     unset($array['ProfilePrivacySettingDefaultID']);
  },
  $your_array
);
0 голосов
/ 03 сентября 2015

Я бы сказал, что 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;
}
0 голосов
/ 05 марта 2012

Я бы просто перебрал массивы и сбросил бы конкретное значение:

foreach($array AS $value){
    unset($value['ProfilePrivacySettingDefaultID']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...