PHP Обновление многомерного массива / добавление нового ключа в уже сохраненный ключ - PullRequest
0 голосов
/ 12 марта 2020

Это ранее сохраненный массив.

$market_data_array = get_option('market_data');

Array
(
    [Turkey] => Array
        (
            [Gold] => Array
                (
                    [2020] => Array
                        (
                            [March] => Array
                                (
                                    [12] => 25000
                                )

                        )

                )

        )

)

Вот так я обновляю массив новыми данными.

$country_name = 'Turkey';
$rates_property_type = 'Silver';
$year = '2020';
$month = 'March';
$day_date = '12';
$rate_today = 8000;

$market_data_array[] = array(
    "".$country_name."" => array(
        "".$rates_property_type."" => array(
            "".$year."" => array(
                "".$month."" => array(
                    "".$day_date."" => "".$rate_today."",
                ),
            ),
        ),
    ),
);

update_option('market_data', $market_data_array);

Так должен обновляться новый массив.

Array
(
    [Turkey] => Array
        (
            [Gold] => Array
                (
                    [2020] => Array
                        (
                            [March] => Array
                                (
                                    [12] => 25000
                                )

                        )

                )

            [Silver] => Array
                (
                    [2020] => Array
                        (
                            [March] => Array
                                (
                                    [12] => 8000
                                )

                        )

                )

        )

)

Я сохраняю рыночные данные для нескольких стран с несколькими типами свойств в одном массиве и в одной базе данных WordPress.

Это кажется простым, но мой мозг озадачен. Это дало мне головную боль за последние 5 часов. Я буду благодарен за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Вы можете использовать array_merge_recursive для генерации обновленных рыночных данных:

$country_name = 'Turkey';
$rates_property_type = 'Silver';
$year = '2020';
$month = 'March';
$day_date = '12';
$rate_today = 8000;

$new_market_data = array(
    "".$country_name."" => array(
        "".$rates_property_type."" => array(
            "".$year."" => array(
                "".$month."" => array(
                    "".$day_date."" => "".$rate_today."",
                ),
            ),
        ),
    ),
);

$market_data_array = array_merge_recursive($market_data_array, $new_market_data);
print_r($market_data_array);

Вывод:

Array
(
    [Turkey] => Array
        (
            [Gold] => Array
                (
                    [2020] => Array
                        (
                            [March] => Array
                                (
                                    [12] => 25000
                                )
                        )
                )
            [Silver] => Array
                (
                    [2020] => Array
                        (
                            [March] => Array
                                (
                                    [12] => 8000
                                )
                        )
                )
        )
)

Демонстрация на 3v4l.org

1 голос
/ 12 марта 2020

Вот еще один способ.

<?php
$market_data_array =array (
    'Turkey' => 
    array (
        'Gold' => 
        array (
            2020 => 
            array (
                'March' => 
                array (
                    12 => 25000
                ),

            ),

        ),

    ),

);

$country_name = 'Turkey';
$rates_property_type = 'Silver';
$year = '2020';
$month = 'March';
$day_date = '12';
$rate_today = 8000;

$market_data_array[$country_name][$rates_property_type][$year][$month][$day_date] = $rate_today;
print_r($market_data_array);

Образец: https://3v4l.org/5MkRI

...