Не удается выполнить итерацию по объекту в Ubuntu PHP 5.2.10-2 Работает на PHP 5.2.10?

StackOverflow https://stackoverflow.com/questions/1860025

  •  13-09-2019
  •  | 
  •  

Вопрос

С помощью этого кода я выполняю итерацию по объекту.

Работает:

  • Windows с WAMP и PHP 5.2.9
  • Веб-сервер Linux с PHP 5.2.10

Это не работает на моем рабочем столе:

  • Ubuntu 9.10 с PHP 5.2.10-2 из репозитория
$incomingData = json_decode($_POST['data']);

foreach($incomingData as $key => $action)
{

}

Недопустимый аргумент, указанный для foreach()

Это было полезно?

Решение

Возможно, на одном из ваших серверов включена функция magic_quotes_gpc, поэтому вы можете попробовать использовать косые черты в $_POST['data'] перед его декодированием.Обе версии PHP должны иметь возможность выполнять итерации по объектам.

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

Вы уверены, что у вас правильные версии PHP?

Из документации для foreach:

Начиная с PHP 5, также возможно выполнять итерации объектов.

Попробуйте использовать json_decode со вторым аргументом, равным true, чтобы сделать json_decode возвращает ассоциативные массивы, а не объекты.

$incomingData = json_decode($_POST['data'], true);

Где второй аргумент, $assoc (по умолчанию используется значение false) означает:

Когда TRUE, возвращенные объекты будут преобразованы в ассоциативные массивы.

Я предполагаю, что в одном окне меньше PHP 5.

Чтобы убедиться, что это проблема, попробуйте изменить $incomingData к какому-то безобидному ассоциативному массиву:

$incomingData = array("foo" => "bar", "baz" => "monkey");

и посмотрите, устранит ли это ошибку.

попробуйте сделать:

$data_array = get_object_vars(json_decode($json_data));

print_r($data_array);

this is only if you obtain information from some web page such as

$data = file_get_contents('http://www.someurl.com/somerestful_url/');
$data_array = get_object_vars(json_decode($data));
print_r($data_array);

кроме того, вы, вероятно, пытались выполнить json_encode, но вместо этого поставили json_decode($_POST['data']);

если только у вас нет строки json внутри $_POST['data'];это не сработает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top