Добавление в многомерный массив

#php #arrays #wordpress #multidimensional-array #foreach

#php #массивы #wordpress #многомерный-массив #foreach

Вопрос:

Вот мой код:

 $get_access_keys_from_wp = get_user_meta( $user_id, '_tdv_volunteer_positions' );
$new_access_keys = array();    

if ( $get_access_keys_from_wp ) {
            echo "This user is signed up for other positions.";

            $current_access_keys = $get_access_keys_from_wp;

            foreach($current_access_keys as $key => $value) {
                $new_access_keys[] = $value;
            }
            //$new_access_keys[] = $position_post_id;
            $new_access_keys[] = array('position_id' => $position_post_id, 'volunteer_first_name' => $first_name, 'volunteer_last_name' => $last_name);

        } else {
            echo "This user is not signed up for any positions.";

            //$new_access_keys[] = $position_post_id;
            $new_access_keys[] = array('position_id' => $position_post_id, 'volunteer_first_name' => $first_name, 'volunteer_last_name' => $last_name);

        }
  

Изначально я получаю следующее:

 Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [position_id] => 67
                    [volunteer_first_name] => Mike
                    [volunteer_last_name] => Jackson
                )

        )

)
  

И это здорово … Я хочу, чтобы это было так. Но, как вы можете видеть из приведенной выше логики, мне нужно иметь возможность перебирать массив, если он уже существует, и добавлять к нему, чтобы он выглядел следующим образом:

 Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [position_id] => 67
                    [volunteer_first_name] => Mike
                    [volunteer_last_name] => Jackson
                )
            [1] => Array
                (
                    [position_id] => 68
                    [volunteer_first_name] => Mike
                    [volunteer_last_name] => Jackson
                )

        )

)
  

Но вместо этого я получаю такие результаты:

 Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [position_id] => 67
                            [volunteer_first_name] => Mike
                            [volunteer_last_name] => Jackson
                        )

                )

            [1] => Array
                (
                    [position_id] => 68
                    [volunteer_first_name] => Mike
                    [volunteer_last_name] => Jackson
                )

        )

)
  

Комментарии:

1. Я не думаю, что копирование $get_access_keys_from_wp $current_access_keys необходимо, поскольку впоследствии вы, похоже, ничего не изменяете.

Ответ №1:

Кажется, вам нужно пойти на 1 уровень глубже при добавлении существующих значений. Попробуйте заменить

 foreach($current_access_keys as $key => $value) {
    $new_access_keys[] = $value;
}
  

с помощью

 foreach($current_access_keys as $key => $value) {
    $new_access_keys[] = $value[0];
}
  

или, если существующий массив содержит более 1 элемента

 foreach($current_access_keys as $key => $value) {
    $new_access_keys = array_merge($new_access_keys,$value);
}