سؤال

والسيناريو:

$x = json_decode( $x );
foreach ( $x as $item )
{
    $info[] = $item;  //ERROR
}

وأنا حلقات الرغم من datafeed للحصول على البيانات. أريد أن إضافة عناصر إلى كائن stdClass في حلقة. كيف لي أن افعل ذلك؟ أنا لست على دراية في stdobj.

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

المحلول

إذا كنت تتوقع أن json_decode للعودة صفيف، يمكنك أن تفعل ما يلي:

$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;

ويمكن الاطلاع على مزيد من المعلومات والأمثلة على هنا .

نصائح أخرى

إذا كنت فهمت بشكل صحيح، يجب عليك فقط أن تكون قادرة على متابعة تركيب وجوه منتظم للحصول على النتيجة التي تريدها. إضافة المعلمة الثانية اختياري لjson_decode مجموعة لtrue للحصول على فك سلمان الخاص باعتباره مجموعة النقابي، كما أنه يبدو كما لو كان هذا هو الشكل الذي تستخدمه في.

$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) { 
    $info->$key = $val;
}

وكما أشار اللاعب Ignas على الرغم من خارج، ونتائج json_decode() حان بالفعل يعود إلى كائن stdClass، حتى إذا كنت تستخدم فقط $x = json_decode($x)، فإنك لن تحتاج $info على الإطلاق ... كنت بالفعل قد $x ككائن stdClass.

SPL في href="http://php.net/manual/en/class.arrayobject.php" rel="nofollow noreferrer"> ArrayObject دعونا كنت تستخدم نفس الجملة التي يولد خطأ في المثال الخاص بك. يتم توفير هذه لديك القدرة على استخدام ArrayObject بدلا من stdClass.

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