سؤال

مرحبا، أريد فقط أن أعرف لماذا غلة الكود هذا (على الأقل بالنسبة لي) نتيجة غير صحيحة.

حسنا، ربما أنا في خطأ هنا

$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';

كنت أظمني أنه إذا كان الحطب نمط "السندات"، فإن الوصف هو "الورق: BOND" وإذا كان Papertype لا يساوي "BOND"، ثم الوصف هو "ورق".

ولكن عندما أقوم بتشغيل هذه التعليمات البرمجية، فإن النتائج هي الوصف إما "بوند" أو "آخر" وتركتني أتساءل أين كانت ورقة "الورقة": "ذهبت ؟؟؟

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

المحلول

$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');

حاول إضافة الأقواس، بحيث تكون السلسلة متسلسلة إلى سلسلة بالترتيب الصحيح.

نصائح أخرى

ترتبط بسحب المشغل. عليك أن تفعل ما يلي:

$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');

أعتقد أن الجميع أعطى الحل، أود أن أسهم في سبب النتيجة غير المتوقعة.

بادئ ذي بدء، يمكنك التحقق من الأصل، وكيف يتم تقييم المشغلين (يسار، يمين، نظام إرديادي، إلخ).

http://php.net/manual/fa/language.operators.precedence.php.

الآن إذا قمنا بتحليل الجملة الخاصة بك.

$ paperType = 'bond';
$ description = 'Paper:'. ($ paperType == 'bond')? 'Bond': 'Other';

1) نراجع الجدول والعثور على أن الأقواس يتم تقييمها أولا، ثم "." (تسلسل) يتم تقييمه وفي النهاية المشغل الفيريني "؟"، لذلك يمكننا ربط ذلك على النحو التالي:

// evaluate the parenthesis ... ($ paperType == 'bond')
$ description = ('Paper:'. 1)? 'Bond': 'Other';
//result
$ description = 'Paper: 1'? 'Bond': 'Other';

2) لدينا الآن المشغل القصير، ونحن نعلم أن سلسلة يتم تقييمها "حقيقية"

// وثائق PHP عند التحويل إلى المنطقي، تعتبر القيم التالية خطأ:

... سلسلة فارغة، وسلسلة "0"

$ description = true? 'Bond': 'Other';

3) وأخيرا

$ description = 'bond';

آمل أن أكون قد أوضحت السؤال. تحيات.

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