Intereting Posts
php PDO вставляет несколько строк в несколько строк с заполнителями Группировка результатов под заголовком Вызов неопределенной функции mcrypt_decrypt () – даже если установлен php5-mcrypt Как удалить теги HTML, CSS из строки? PHP cURL не возвращает XML PHP mail () BCC – отображает только адрес получателей в заголовке To: Facebook FQL. Какой самый простой способ получить все изменения страницы в одном запросе, упорядоченном по дате / времени? JavaScript Подтверждение перед удалением с помощью PHP / MYSQL Установите флажок, если он установлен Когда do / следует использовать __construct (), __get (), __set () и __call () в PHP? Выбирайте продукты по нескольким атрибутам, используя AND вместо OR, конкатенатор, модель данных EAV Base64 + sha256 не дает ожидаемого результата Редактирование существующей PDF-страницы с несколькими файлами с использованием FPDF и FPDI Разрешить копирование содержимого из pdf, созданного с помощью tcpdf Доступ к массиву JSON после json_decode / многомерного массива

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

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

Работает:

  • 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, поэтому вы можете попытаться использовать stripslashes на $ _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);

 это только в том случае, если вы получаете информацию с некоторой веб-страницы, например

 $ 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']; это не будет работать.