(решено) почему не передаются перменные в функцию array_map php?

180
29 апреля 2019, 02:50

Есть срочки в коде (читайте комментарии в коде):

<?php
logFile($domen_crm.' / '.$apikey_crm.' / '.$code_magazine.PHP_EOL);
// тут 3 переменные есть и выводятся.
$prod_mass = array_map( function($v){
    return [
        'quantity'=>$v['quantity'],
        'offer' => [
            'id' => logFile($v['name'].' / '.$domen_crm.' / '.$apikey_crm)
        ]
    ];
}, $json); // тут выводится только перменная $v['name'], а $domen_crm и apikey_crm пустые.

Первый раз такое вижу. Видимо я плохо знаю работу array_map

Answer 1

Проблема в области видимости переменных для анонимны функций https://secure.php.net/manual/ru/functions.anonymous.php.

array_map в вашем случае принимает аргумент анонимную функцию.

Достаточно добавить use ($domen_crm) на:

$prod_mass= array_map(function($v) use ($domen_crm, $apikey_crm) {
    return ['quantity'=>$v['quantity']...

и всё заработает.

READ ALSO
Как создать одноразовую ссылку? [закрыт]

Как создать одноразовую ссылку? [закрыт]

Необходимо создать ссылку для клиента, которая будет не активна после захода на неё

201
ВК бот не отвечает

ВК бот не отвечает

пишу бота для ВК на php и развёртываю его не herokuНо на сообщения он не отвечает, хотя CallBack API не ругается

144