Ключи ассоциативного массива - PullRequest
0 голосов
/ 23 апреля 2020

Мне нужно создать многомерные массивы с ключами для первого уровня.

$aeroports_dates_array = array();
while ( have_rows('aeroports', $product_id) ) : the_row();
    $aeroport = get_sub_field('aeroport');
    $date_array = array();
    while ( have_rows('dates', $product_id) ) : the_row();
        $date = get_sub_field('debut');
        $date_array .= $date;
    endwhile;
    $aeroports_dates_array[$aeroport] .= $date_array;
endwhile;

Результат:

Array
(
    [titre1] => Arrayvaleur1valeur2
    [titre2] => Arrayvaleur3valeur4
)

Я что-то упустил, потому что мне это нужно вот так:

Array
(
[titre1] => Array
    (
        [0] => valeur1
        [1] => valeur2
    )

[titre2] => Array
    (
        [0] => valeur3
        [1] => valeur4
    )

)

1 Ответ

0 голосов
/ 23 апреля 2020

Ошибки в этих строках:

$date_array .= $date;
$aeroports_dates_array[$aeroport] .= $date_array;

.= - оператор связывания . Он выполняет конкатенацию строк и сохраняет значение в своем левом операнде.
Это эквивалентно:

$date_array = $date_array . $date;

Оператор конкатенации строк (.) ожидает две строки и преобразует свои операнды к строкам перед их объединением. $date_array является массивом, и любой массив, преобразованный в строку, создает строку 'Array'. Это объясняет результат, который вы получаете.

Вы не хотите объединять строки, но хранить значения в массиве. Для этого вы можете использовать синтаксис в квадратных скобках для добавления элемента в конец массива:

$date_array[] = $date;

Вторая неправильная строка должна быть:

$aeroports_dates_array[$aeroport] = $date_array;

Опять же, оператор конкатенации строк не помогает при работе с массивами. Здесь $date_array не добавляется в конце $aeroports_dates_array (с использованием первой доступной клавиши цифры 1030 *), но связано со значением, сохраненным в переменной $aeroport. Это обычные назначения для элементов массива с использованием ключа (значение, хранящееся в $date_array, связано с ключом, хранящимся в $aeroport).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...