لا يمكن تكرار من خلال الكائن في Ubuntu PHP 5.2.10-2 يعمل على PHP 5.2.10؟

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

  •  13-09-2019
  •  | 
  •  

سؤال

مع هذا الرمز أنا تكرار من خلال كائن.

يعمل:

  • ويندوز مع wamp و php 5.2.9
  • خادم Web Linux مع PHP 5.2.10

لا يعمل على سطح المكتب الخاص بي:

  • أوبونتو 9.10 مع PHP 5.2.10-2 من الريبو
$incomingData = json_decode($_POST['data']);

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

}

حجة غير صالحة للتزود foreach()

هل كانت مفيدة؟

المحلول

ربما تم تمكين أحد الخوادم الخاصة بك magic_quotes_gpc، حتى تتمكن من محاولة استخدام Stripslashes على $ _Post ["البيانات" ["البيانات"] قبل فك تشفيرها. يجب أن تكون كلا إصدارات 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)؛ هذا فقط إذا حصلت على معلومات من بعض صفحة الويب مثل بيانات $ = file_get_contents ('http://www.someurl.com/somerestful_url/')؛ $ data_array = get_object_vars (json_decode (بيانات $))؛ print_r ($ data_array)؛

أيضا، ربما كنت قد تحاول القيام ب JSON_ENCODE، ولكن بدلا من ذلك وضع JSON_DECODE ($ _ النشر ["البيانات"])؛

ما لم يكن لديك سلسلة JSON داخل $ _Post ['البيانات']؛ لن يعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top