الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا المنطق خاطئ في php ( == )

بدأه Abdullah.Alshammeri في 16 مايو 2011 · 4 رد · 596 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عند تنفيذ :

<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

if(false == array())
	print ' false == array() and ';
else
	print ' false != array() and ';

if(false == 0)
	print ' false == 0 and ';
else
	print ' false != 0 and ';

if(array() == 0)
	print ' 0 == array()';
else
	print ' 0 != array()';


?>

النتيجة :

false == array() and  false == 0 and  0 != array()

لماذا ؟

المصدر :

http://stackoverflow...quals-compariso

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

false تعتبر متغير bool و لهذا عند إستخدام false == 0 يتم تحويل false إلى قيمتها كـ bool (وهي هنا صارت تساوي الصفر)

array يتم حجزها كمصفوفة و لايمكن تحويلها و بالتالي لايمكن أن تساوي صفراً

المصفوفات الفارغة بتعمل return false في false == array()

الأصوب إنك تستخدم === بدل من ==

1

موقعي الشخصي:

http://developer-i.com

#3
اقتباس
When converting to boolean, the following values are considered FALSE:

the boolean FALSE itself

the integer 0 (zero)

the float 0.0 (zero)

the empty string, and the string "0"

an array with zero elements

an object with zero member variables (PHP 4 only)

the special type NULL (including unset variables)

SimpleXML objects created from empty tags

1
#4

شكراً لكم ،

وصلت الفكرة :

المصفوفات الفارغة تعيد false إذن .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

السلام عليكم

وكدلك أخي الشمري هنام فرق بين معامل المقارنة == و ===

المعامل == يقارن القيم فقط و لايكترث بنوعها أي ادا كان لدينا مثل "1"=i$ و 1=i$ فانه سيعيد القيمة TRUE رغم أن أحدهما string والآخر integer !

المعامل === لا يعيد TRUE الا ادا كان المعاملان من نفس النوع و لديهما نفس القيمة

لغة php لغة مرنة جدا...تصور أنك تنشىء function بأكثر من بارمتر لكن ادا قمت بتمرير مثلا بارمتر واحد فقط رغم أن البارمترات المتبقية ليست اختارية فانها ستعمل !!

هنا تظهر آلية عمل PHP

تم تعديل هذه المشاركة بواسطة me&delphi في 22 مايو 2011 في 05:09

مواضيع مشابهة