php динамически создавайте массивы и объединяйте их - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь динамически создать неизвестное количество массивов внутри foreach l oop, объединить их все в конце в один массив и использовать его в формате JSON для Google Аналитика.

Пока у меня есть следующий код, который выдает ошибку в части слияния:

        $p=1;
        foreach(...){
        ...
        $arr = 'arr'.$p;
        $name = $order->ProductGroupName;
        $name = str_replace("'", "", $name);
        $arr = array(
            "name"=>$name,
            "id"=>$order->ProductCode,
            "price"=>$order->RRP,
            "quantity"=>$order->Quantity
        );
            $p++;       
        }
        for ($q = 1; $q<$p; $q++){
            $arry = 'arr'.$q;
            $merge = array_merge($arry, $merge);
        };

Как динамически создавать массивы и объединять их в конце, пожалуйста? Я относительно новичок в PHP и изо всех сил старался заставить это работать.

1 Ответ

1 голос
/ 07 января 2020

Мне кажется, я понимаю, что ты пытаешься сделать. Просто динамически добавьте [] к массиву, и вам не нужно объединять:

foreach($something as $order) {
    $arr[] = array (
        "name"=>str_replace("'", "", $order->ProductGroupName),
        "id"=>$order->ProductCode,
        "price"=>$order->RRP,
        "quantity"=>$order->Quantity
    );
}

Если вы хотите иметь строковые ключи по любой причине, тогда:

$p = 1;
foreach($something as $order) {
    $arr["SomeText$p"] = array (
        "name"=>str_replace("'", "", $order->ProductGroupName),
        "id"=>$order->ProductCode,
        "price"=>$order->RRP,
        "quantity"=>$order->Quantity
    );
    $p++;
}

И это оно. Проверьте с помощью:

print_r($arr);

Такие вещи, как $arry = 'arr'.$q; вонь переменных переменных (хотя и не сделано правильно) и не должны использоваться.

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