Невозможно назначить ключ => значение для массива Foreach - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть следующий массив стран ($countryIso = array("US","BR","CL");), и я хочу создать новый массив для отображения следующей схемы:

('US', 200)

Я попытался создать следующую структуру:

    $countryIso = array("US","BR","CL");

    foreach ($countryIso as $isocode) {
        $productcalc[] = "'" . strtoupper($isocode) . "'" . ',' . number_format($this->product->calculate($product = $product, $countryIso = $isocode), 0, '.', ',');
    }

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

Массив ([0] => 'US', 200

, являющийся ключом [0], а не US.

Любое представление о том, как создать результат key => value с помощью

Array ([US] => 200

с использованием структуры foreachв моем коде? Я пытался с вариантами, такими как array_combine, чтобы объединить массив countryIso с массивом productcalc, но безуспешно

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Просто определите массив с правильными значениями.

$countryIso =[
    "US" => 200,
    "BR" => 300,
    "CL" => 400,
];

Если значения должны быть рассчитаны, используйте:

$countryIso = array("US","BR","CL");

foreach ($countryIso as $isocode) {
    $productcalc[strtoupper($isocode)] = number_format($this->product->calculate($product = $product, $countryIso = $isocode), 0, '.', ',');
}

Теперь $ productcalc - это нужный вам массив.

0 голосов
/ 31 декабря 2018

Вы можете сохранить свой массив iso и просто объединить массивы:

<code><?php
    $iso = ['US', 'BR', 'CL'];
    $values = [200, 300, 400]; # obviously populate this with your actual values

    $newArray = array_combine($iso, $values); # array_combine($keys, $values)
    echo '<pre>'. print_r($newArray, 1) .'
';

Редактировать: Дополнительные мысли, если значения получены через значение iso

<?php
    $iso = ['US', 'BR', 'CL'];
    $newArray = [];

    foreach ($iso as $val)
    {
        $newArray[$val] = getValueFromIso($val); # not a real function - just an example
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...