var_dump не выводит массив

210
21 февраля 2019, 10:10

Получаю сообщению по вебсокету, здесь по одному их обрабатываю. Почему если убрать первый var_dump, то второй ничего не выведет, а с первым var_dump выводит. Первый var_dump выводит всю структуру массива, а второй его часть.

$this->queryByMessage($pair, $method, $endpoint, function ($data) use ($pair, $callback, $response_model) {
        $str = strpos($data, "[");
        $data = substr($data, $str, strlen($data));
        $data = json_decode($data,true);
        var_dump($data);//первый
      //  приводим ответ к структуре
        foreach ($data as $order_book) {
            if (is_array($order_book)) {
                foreach ($order_book as $order) {
                    if(!empty($order)) {
                        if ($order[0] === 't') {
                            $trades[$pair][] = [$order[1], $order[2], $order[3], $order[4], $order[5]];
                        }
                    }
                }
            }
        }
        //если response_model = true, то преобразовываем данные
        if(!empty($trades)) {
            $result = $response_model ? $this->formatedResponse($trades, 'trade_history') : $trades;
            //передаем в $callback данные
           var_dump($result );//второй
        }
    }, $close_callback, $error_callback);
Answer 1

вообще напишу ответ, потомучто в коментарии будет очень сложно все описать. Смотрите что бы легчи читать код было и разобраться в том что и где не работает, стоит отказаться от вложеных if'ов, смотрим пример ниже

$this->queryByMessage($pair, $method, $endpoint, function ($data) use ($pair, $callback, $response_model) {
    $str = strpos($data, "[");
    $data = substr($data, $str, strlen($data));
    $data = json_decode($data, true);
    var_dump($data);//первый
    //  приводим ответ к структуре
    foreach ($data as $order_book) {
        // если не массив повторим
        if (!is_array($order_book)) {
            echo 'order boock is not array';
            continue;
        }
        foreach ($order_book as $order) {
            // если пуст повторим
            if (empty($order)) {
                echo 'error empty order continue';
                continue;
            }
            // если 0 элемент t повторяем
            if (isset($order[0]) && $order[0] !== 't') {
                // тут выводим ошибку
                echo 'error not found order 0' . PHP_EOL;
                continue;
            }
            $trades[$pair][] = [$order[1], $order[2], $order[3], $order[4], $order[5]];
        }
    }

    //если response_model = true, то преобразовываем данные
    if (empty($trades)) {
        // тут либо exception либо возврат из функции
        return false;
    }
    $result = $response_model ? $this->formatedResponse($trades, 'trade_history') : $trades;
    //передаем в $callback данные
    var_dump($result);//второй
}, $close_callback, $error_callback);

далее если не выводит, значит не доходит до того момента когда надо вывести. А значит у вас $trades пуст, а почему он пуст, скорректируйте код и увидите где что пусто и куда не доходит.

READ ALSO
Помогите слить массивы через php

Помогите слить массивы через php

Как с помощью php объединить эти 2 массива

143
Сохранить текст в БД вместе с переносами строк

Сохранить текст в БД вместе с переносами строк

Подскажите, как правильно записать в БД текст, чтобы при этом сохранились все переносы строк? Текст парсится с сайта и потом уже пишется в БД

166
Взять содержимое из json php

Взять содержимое из json php

Подскажите, пожалуйста, есть такой код

211
Как импортировать данные xlsx с формулами?

Как импортировать данные xlsx с формулами?

Как можно в wordpress импортировать данные xlsx, обработать эти данные и вывести результат на фронтенд? Также в файле xlsx могут быть формулы, те

130