#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);
}