Как получить несколько значений «Массив» из приложения POSTMAN / json в необработанном виде в PHP

У меня возникает небольшая проблема, когда я пытаюсь получить несколько значений массива в PHP для проверки. У меня есть этот объект со значениями в исходной форме POSTMAN, application/json:

{
  "name":"create_insert_new_delivery",
  "param":{
       "email_of_shipment_owner":"[email protected]",
       "shipment_type ":"B",
       "item_name": ["50", "60"],
       "item_weight ": ["H", "I"],
       "item_length": ["70", "90"]
 }
}

Когда я пытаюсь получить $ item_name = $ this-> validateParameter ('имя_элемента', $ this-> param ['имя_элемента'], ARRAY, true); типа две строки ниже, я получаю это

**ОШИБКА : **

[04-Jul-2018 13:16:58 UTC] PHP Parse error: syntax error, unexpected ',', expecting '(' in /home/osconliz/public_html/Osconlizapicall/api.php on line 304

Код получения ниже.

ЛИНИЯ 302

$email_of_shipment_owner = $this->validateParameter('email_of_shipment_owner', $this->param['email_of_shipment_owner'], STRING, true);

ЛИНИЯ 303

 $shipment_type = $this->validateParameter('shipment_type', $this->param['shipment_type'], STRING, true);

ЛИНИЯ 304

$item_name = $this->validateParameter('item_name', $this->param['item_name'], ARRAY, true);

ЛИНИЯ 305

 $item_weight = $this->validateParameter('item_weight', $this->param['item_weight'], ARRAY, true);

ЛИНИЯ 306

$item_length = $this->validateParameter('item_length', $this->param['item_length'], ARRAY, true);

но СТРОКИ принимаются правильно:

public function validateParameter($fieldName, $value, $dataType, $required = true){
        switch ($dataType) {
            case BOOLEAN:
            if (!is_bool($value)){
                $this->throwError(VALIDATE_PARAMETER_DATATYPE, "Datatype is not valid for " . $fieldName . ' it should be boolean.');
            }
            break;
            case INTEGER:
            if (!is_numeric($value)){
                $this->throwError(VALIDATE_PARAMETER_DATATYPE, "Datatype is not valid for " . $fieldName . ' it should be integer.');
            }
            break;
            case STRING:
            if (!is_string($value)){
                $this->throwError(VALIDATE_PARAMETER_DATATYPE, "Datatype is not valid for " . $fieldName . ' it should be string.');
            }
            break;
            case ARRAY:
            if (!is_array($value)){
                $this->throwError(VALIDATE_PARAMETER_DATATYPE, "Datatype is not valid for " . $fieldName . ' it should be array.');
            }
            break;

            default:
            $this->throwError(VALIDATE_PARAMETER_DATATYPE, "Datatype is not valid for " . $fieldName);
            break;

        }

        return $value;
  }

После получения я хочу проверить такие данные

    if ($this->item_category == ""){

          } else {


          if ($this->item_category == "A" || $this->item_category == "B" || $this->item_category == "C" || $this->item_category == "D" || $this->item_category == "E" || $this->item_category == "F" || $this->item_category == "G" || $this->item_category == "H") {

          } else {
            $this->throwError(INVALID_DATA_TTT, "Invalid item category");
           exit();  
          }
          } 

После ошибки это не имеет ничего общего с вашей логикой, это просто ,, который где-то плавает. Но я этого еще не заметил.

Loek 04.07.2018 15:52

@loek Спасибо, но это правильный способ получить "$ item_name = $ this-> validateParameter ('item_name', $ this-> param ['item_name'], ARRAY, true);" формат массива.

Shasha 04.07.2018 15:53

@loek предыдущие строки, прежде чем они не содержат синтаксической ошибки

Shasha 04.07.2018 15:53

На самом деле это очень логично, но я этого совсем не ожидал. Смотрите мой ответ.

Loek 04.07.2018 15:56

@loek, спасибо за ответ, но не могли бы вы привести пример, потому что я не понимаю "Это потому, что ARRAY явно нечувствителен к регистру функций для создания массивов", особенно в этой части "Самый простой способ исправить это - просто выбрать другой ключевое слово, я думаю? " массив причин является форматом приема, как и строка th, указанная выше.

Shasha 04.07.2018 15:59

Это означает, что вы не можете использовать слово «массив», потому что PHP всегда будет читать его как функцию для создания массивов. Вы можете заменить его чем угодно, кроме ключевого слова, например ARRAYS или JSON_ARRAY, и он должен работать. Не забудьте также изменить его в операторе switch.

Loek 04.07.2018 16:01

@loek Это решило проблему, но как мне затем разбить массив для проверки, я сделал обновление.

Shasha 04.07.2018 16:10

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

Loek 04.07.2018 16:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
369
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с тем, что ARRAY, по-видимому, является функция без учета регистра для создания массивов. Смотрите здесь: https://3v4l.org/keu3K

Самый простой способ исправить это - просто выбрать другое ключевое слово, я думаю?

РЕДАКТИРОВАТЬ - Для справки, все зарезервированные ключевые слова и функции в php: https://secure.php.net/manual/en/reserved.keywords.php

Другие вопросы по теме