php - مرجع - ماذا يعني هذا الرمز في فب؟


ما هذا؟

هذا هو مجموعة من الأسئلة التي تأتي من الآن فصاعدا حول بناء الجملة في فب. هذا هو أيضا ويكي الجماعة، لذلك يدعى الجميع للمشاركة في الحفاظ على هذه القائمة.

لماذا هذا؟

كان من الصعب أن تجد أسئلة حول المشغلين ورموز التركيب الأخرى .¹
والفكرة الرئيسية هي أن يكون لديك روابط إلى الأسئلة الموجودة في ستاك أوفيرفلو، لذلك فإنه من الأسهل بالنسبة لنا للإشارة إليها، وليس لنسخ المحتوى من دليل فب.

¹ ملاحظة: منذ كانون الثاني / يناير 2013، يدعم ستاك أوفيرفلو الأحرف الخاصة . مجرد محاذاة عبارات البحث عن طريق علامات الاقتباس، على سبيل المثال [php] "==" vs "==="

ماذا علي أن أفعل هنا؟

إذا كان أحد الأشخاص قد تمت الإشارة إليك هنا لأنك قد طرحت هذا السؤال، فيرجى العثور على بناء الجملة المحدد أدناه. الصفحات المرتبطة إلى دليل فب جنبا إلى جنب مع الأسئلة المرتبطة من المرجح أن يجيب على سؤالك بعد ذلك. إذا كان الأمر كذلك، يتم تشجيعك على أوبفوت الجواب. وليس المقصود من هذه القائمة كبديل عن مساعدة الآخرين المقدمة.

القائمة

إذا لم يتم سرد الرمز المميز الخاص بك أدناه، قد تجده في قائمة الرموز المميزة بارسر .

& بيتويس المشغلين أو المراجع

=& المراجع

&= بيتويس المشغلين

&& المشغلين المنطقيين

% مشغلي الحساب

!! العوامل المنطقية

@ مشغلي التحكم في الأخطاء

?: مشغل ثلاثي

?? نول كواليسيس أوبيراتور (منذ فب 7)

: بناء جملة بديلة لهياكل التحكم ، مشغل ثلاثي

:: نطاق القرار المشغل

\ نامسباسس

-> فئات والكائنات

=> صفائف

^ بيتويز مشغلي

>> بيتويس مشغلي

<< بيتويز مشغلي

<<< هيريدوك أو نودوك

= تعيين مشغلي

== مقارنة مشغلي

=== مقارنة مشغلي

!== مشغلي المقارنة

!= مشغلي المقارنة

<> مقارنة مشغلي

<=> مشغلي المقارنة (منذ فب 7.0)

  • سباسشيب (ثلاث طرق مقارنة) المشغل

| مشغلي بت

|| العوامل المنطقية

~ بيتويس مشغلي

+ مشغلي الحساب ، مشغلي الصفيف

+= و -= تعيين مشغلي

++ و -- زيادة / إنقاص المشغلين

.= تعيين مشغلي

. سلسلة مشغلي

, وسيطات الدالة

, إعلانات متغيرة

المتغيرات المتغيرة $$

` مشغل التنفيذ

<?= الكلمات القصيرة المفتوحة

[] المصفوفات (بناء الجملة القصيرة منذ فب 5.4)

<? فتح وإغلاق العلامات

... الوسيطة تفريغ (منذ فب 5.6)

** إكسبوننتياتيون (منذ فب 5.6)

# تعليق على غرار قذيفة واحدة



Answers



زيادة / إنقاص المشغلين

++ زيادة المشغل

-- مشغل تخفيض

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

هذه يمكن أن تذهب قبل أو بعد المتغير.

إذا وضعت قبل المتغير، يتم إجراء عملية الزيادة / النقصان للمتغير أولا ثم يتم إرجاع النتيجة. إذا وضعت بعد المتغير، يتم إرجاع المتغير أولا ، ثم تتم عملية الزيادة / النقصان.

فمثلا:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

مثال حي

في الحالة أعلاه ++$i يستخدم، لأنه أسرع. $i++ سيكون لها نفس النتائج.

ما قبل الزيادة هو أسرع قليلا، لأنه يزيد حقا المتغير وبعد أن "عودة" النتيجة. ما بعد زيادة يخلق متغير خاص، نسخ هناك قيمة المتغير الأول وفقط بعد استخدام المتغير الأول، يستبدل قيمته مع الثانية.

ومع ذلك، يجب عليك استخدام $apples-- ، منذ أول مرة تريد عرض العدد الحالي من التفاح، ومن ثم كنت ترغب في طرح واحد منه.

يمكنك أيضا زيادة الأحرف في فب:

$i = "a";
while ($i < "c") {
    echo $i++;
}

مرة واحدة يتم الوصول aa هو التالي، وهلم جرا.

لاحظ أنه يمكن زيادة متغيرات الأحرف ولكن لا تنخفض، وحتى مع ذلك يتم دعم أحرف أسي البسيطة (أز و أز).

ستاك أوفيرفلو المشاركات:




مشغل بيتويز

ما هو قليلا؟ قليلا هو تمثيل 1 أو 0. أساسا أوف (0) و أون (1)

ما هو بايت؟ ويتكون البايت من 8 بتات وأعلى قيمة للبايت هو 255، مما يعني أن كل بتة محددة. سننظر في السبب في أن الحد الأقصى لقيمة البايت هو 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

هذا التمثيل من 1 بايت

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 بايت)

بعض الأمثلة لفهم أفضل

المشغل "أند": &

$a =  9;
$b = 10;
echo $a & $b;

وهذا من شأنه أن ينتج عدد 8. لماذا؟ حسنا دعونا نرى استخدام مثال الجدول لدينا.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

حتى تتمكن من رؤية من الجدول بت فقط أنهم يشتركون معا هو 8 بت.

المثال الثاني

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

البتات المشتركة هما 32 و 4، والتي عندما تضاف معا العودة 36.

المشغل "أور": |

$a =  9;
$b = 10;
echo $a | $b;

وهذا من شأنه أن ينتج عدد 11. لماذا؟

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

ستلاحظ أن لدينا 3 بت مجموعة، في 8، 2، 1 الأعمدة. إضافة تلك: 8 + 2 + 1 = 11.







syntax    name              description 
x == y    Equality          True if x and y have the same key/value pairs
x != y    Inequality        True if x is not equal to y
x === y   Identity          True if x and y have the same key/value pairs in 
                              the same order and of the same types
x !== y   Non-identity      True if x is not identical to y
++ x      Pre-increment     Increments x by one, then returns x
x ++      Post-increment    Returns x, then increments x by one
-- x      Pre-decrement     Decrements x by one, then returns x
x --      Post-decrement    Returns x, then decrements x by one
x and y   And               True if both x and y are true x=6 y=3 
                              (x < 10 and y > 1) returns true
x && y    And               True if both x and y are true x=6 y=3 
                              (x < 10 && y > 1) returns true
a . b     Concatenation     Concatenate two strings: "Hi" . "Ha"



الثوابت السحر : على الرغم من أن هذه ليست مجرد رموز ولكن جزءا هاما من هذه العائلة الرمزية. هناك ثمانية الثوابت السحرية التي تتغير اعتمادا على حيث يتم استخدامها.

__LINE__ : رقم السطر الحالي للملف.

__FILE__ : المسار الكامل واسم الملف. إذا تم استخدامه داخل تضمين، يتم إرجاع اسم الملف المضمنة. منذ فب 4.0.2، __FILE__ يحتوي دائما على مسار مطلق مع سيملينكز حل بينما في الإصدارات القديمة أنه يحتوي على مسار نسبي في ظل بعض الظروف.

__DIR__ : دليل الملف. إذا تم استخدامه داخل تضمين، يتم إرجاع دليل الملف المضمنة. وهذا يعادل dirname(__FILE__) . لا يحتوي اسم الدليل هذا على شرطة مائلة ما لم يكن الدليل الجذر. (تمت إضافته في فب 5.3.0.)

__FUNCTION__ : اسم الوظيفة. (أضيفت في فب 4.3.0) اعتبارا من فب 5 هذا ثابت يعود اسم وظيفة كما تم الإعلان (حساسة لحالة الأحرف). في فب 4 يتم تخفيض قيمته دائما.

__CLASS__ : اسم الفئة. (أضيفت في فب 4.3.0) اعتبارا من فب 5 هذا ثابت يعود اسم الفئة كما تم الإعلان (حساسة لحالة الأحرف). في فب 4 يتم تخفيض قيمته دائما. يتضمن اسم الفئة مساحة الاسم التي تم الإعلان عنها في (على سبيل المثال Foo\Bar ). لاحظ أنه اعتبارا من فب 5.4 __CLASS__ يعمل أيضا في الصفات. عند استخدامها في أسلوب سمة، __CLASS__ هو اسم الفئة التي يتم استخدام السمة فيها.

__TRAIT__ : اسم السمة. (أضيف في فب 5.4.0) اعتبارا من فب 5.4 هذا الثابت يعود السمة كما أعلن (حساسة لحالة الأحرف). يتضمن اسم السمة مساحة الاسم التي تم الإعلان عنها في (مثل Foo\Bar ).

__METHOD__ : اسم طريقة الفصل. (تمت إضافته في فب 5.0.0) يتم إرجاع اسم الأسلوب كما تم الإعلان عنه (حساس لحالة الأحرف).

__NAMESPACE__ : اسم مساحة الاسم الحالية (حساسة لحالة الأحرف). يتم تعريف هذا الثابت في تجميع الوقت (أضيفت في فب 5.3.0).

مصدر




<=> مشغل سفينة الفضاء

تمت إضافتها في فب 7

مشغل سفينة الفضاء <=> هو أحدث مشغل مقارنة تمت إضافته في فب 7. وهو مشغل ثنائي غير ارتباطي له نفس الأسبقية مثل مشغلي المساواة ( == != ، === !== ). ويتيح هذا المشغل إجراء مقارنة أبسط بين ثلاث مرات بين اليد اليسرى واليد اليمنى.

ينتج المشغل تعبيرا صحيحا عن:

  • 0 عندما يكون كلا المشغلين متساويين
  • أقل من 0 عندما يكون المعامل الأيسر أقل من المعامل الأيمن
  • أكبر من 0 عندما يكون المعامل الأيسر أكبر من المعامل الأيمن

على سبيل المثال

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

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

قبل فب 7 ستكتب ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

منذ فب 7 يمكنك الكتابة ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});



اكتب مشغلي

يتم استخدام instanceof لتحديد ما إذا كان متغير فب كائن مثبت من فئة معينة.

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

المثال أعلاه سوف ينتج:

bool(true)
bool(false)

السبب: أعلاه مثال $a هو كائن من mclass حتى تستخدم فقط بيانات mclass لا مثيل من مع sclass

مثال مع الميراث

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; 
var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

المثال أعلاه سوف ينتج:

bool(true)
bool(true)

مثال مع استنساخ

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); 
var_dump($b instanceof cloneable);

المثال أعلاه سوف ينتج:

bool(true)
bool(true)



نظرة عامة على المشغلين في فب :

العوامل المنطقية:

  • $ a && $ b: ترو إذا كان كل من $ a و $ b ترو.
  • $ a || $ b: ترو إذا كان $ a أو $ b هو ترو.
  • $ a شور $ b: ترو إذا كان $ a أو $ b ترو، ولكن ليس كليهما.
  • ! $ a: ترو إذا كان $ a ليس ترو.
  • $ a و $ b: ترو إذا كان كل من $ a و $ b ترو.
  • $ a أو $ b: ترو إذا كان $ a أو $ b هو ترو.

عوامل المقارنة:

  • $ a == $ b: ترو إذا كان $ a يساوي $ b بعد نوع شعوذة.
  • $ a === $ b: ترو إذا كان $ a يساوي $ b، وأنهم من نفس النوع.
  • $ a! = $ b: ترو إذا كان $ a لا يساوي $ b بعد نوع شعوذة.
  • $ a <> $ b: ترو إذا كان $ a لا يساوي $ b بعد نوع شعوذة.
  • $ a! == $ b: ترو إذا كان $ a لا يساوي $ b، أو أنها ليست من نفس النوع.
  • $ a <$ b: ترو إذا كان $ a أقل بكثير من $ b.
  • $ a> $ b: ترو إذا كان $ a أكبر بكثير من $ b.
  • $ a <= $ b: ترو إذا كان $ a أقل من أو يساوي $ b.
  • $ a> = $ b: ترو إذا كان $ a أكبر من أو يساوي $ b.
  • $ a <=> $ b: عدد صحيح أقل من أو يساوي أو أكبر من صفر عندما يكون $ a على التوالي أقل من أو يساوي أو أكبر من $ b. متوفر اعتبارا من فب 7.

العوامل الحسابية:

  • - $ a : مقابل $ a.
  • $ a + $ b : مجموع $ a و $ b.
  • $ a - $ b : الفرق بين $ a و $ b.
  • $ a * $ b : منتج $ a و $ b.
  • $ a / $ b : قسيمة $ a و $ b.
  • $ a٪ $ b : المتبقي من $ مقسوما على $ b.
  • $ a ** $ b : نتيجة رفع $ a إلى $ b'th السلطة (قدم في فب 5.6)

زيادة / إنقاص المشغلين:

  • ++ $ a : الزيادات $ واحد تلو الآخر، ثم يعود $ a.
  • $ a ++ : إرجاع $ a، ثم يزاد $ دولار تلو الآخر.
  • - $ a : إنقاص $ واحد تلو الآخر، ثم يعود $ a.
  • $ a-- : إرجاع $ a، ثم تنخفض $ واحد تلو الآخر.

بيتويز مشغلي:

  • $ a & $ b : يتم تعيين البتات التي تم تعيينها في كل من $ a و $ b.
  • $ a | $ b : يتم تعيين البتات التي تم تعيينها إما $ a أو $ b.
  • $ a ^ $ b : يتم تعيين البتات التي تم تعيينها في $ a أو $ b ولكن ليس كلاهما.
  • ~ $ a : البتات التي تم تعيينها في $ a لم يتم تعيينها، والعكس بالعكس.
  • $ a << $ b : قم بتحويل البتات من $ a $ b الخطوات إلى اليسار (كل خطوة تعني "مضاعفة من قبل اثنين")
  • $ a >> $ b : قم بتغيير البتات من $ a $ b الخطوات إلى اليمين (كل خطوة تعني "تقسيم إلى اثنين")

مشغلي السلاسل:

  • $ a. $ b : كونكاتناتيون $ a و $ b.

مشغلي الصفيف:

  • $ a + $ b : إتحاد $ a و $ b.
  • $ a == $ b : ترو إذا كان $ a و $ b لها نفس أزواج المفاتيح / القيم.
  • $ a === $ b : ترو إذا كان $ a و $ b لها نفس أزواج المفاتيح / القيم بنفس الترتيب وبنفس الأنواع.
  • $ a! = $ b : ترو إذا كان $ a لا يساوي $ b.
  • $ a <> $ b : ترو إذا كان $ a لا يساوي $ b.
  • $ a == $ b : ترو إذا كان $ a غير مطابق لل $ b.

التعيين مشغلي:

  • $ a = $ b : يتم تعيين قيمة $ b إلى $ a
  • $ a + = $ b : نفس $ a = $ a + $ b
  • $ a - = $ b : نفس $ a = $ a - $ b
  • $ a * = $ b : نفس $ a = $ a * $ b
  • $ a / = $ b : نفس $ a = $ a / $ b
  • $ a٪ = $ b : نفس $ a = $ a٪ $ b
  • $ a ** = $ b : نفس $ a = $ a ** $ b
  • $ a. = $ b : نفس $ a = $ a. $ ب
  • $ a & = $ b : نفس $ a = $ a & $ b
  • $ a | = $ b : نفس $ a = $ a | $ ب
  • $ a ^ = $ b : نفس $ a = $ a ^ $ b
  • $ a << = $ b : نفس $ a = $ a << $ b
  • $ a >> = $ b : نفس $ a = $ a >> $ b

ملحوظة

ومشغل المشغل or المشغل لهما أسبقية أقل من عامل التعيين = .

وهذا يعني أن $a = true and false; ما يعادل ($a = true) and false .

في معظم الحالات قد ترغب في استخدام && و || ، والتي تتصرف بطريقة معروفة من لغات مثل C، جافا أو جافا سكريبت.




مشغل سفن الفضاء <=> (تمت إضافته في فب 7)

أمثلة ل <=> مشغل سفينة الفضاء (فب 7، المصدر: دليل فب):

النواتج، العوامات، سلاسل، صفائف والكائنات الثلاثية مقارنة بين المتغيرات.

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1



{} مجعد الأقواس

وبعض الكلمات عن آخر مشاركة

$x[4] = 'd'; // it works
$x{4} = 'd'; // it works

$echo $x[4]; // it works
$echo $x{4}; // it works

$x[] = 'e'; // it works
$x{} = 'e'; // does not work

$x = [1, 2]; // it works
$x = {1, 2}; // does not work

echo "${x[4]}"; // it works
echo "${x{4}}"; // does not work

echo "{$x[4]}"; // it works
echo "{$x{4}}"; // it works



سلاسل فب: فب يمكن تحديد السلاسل في أربع طرق ليس فقط طريقتين:

1) واحد إقتباس سلاسل:

$string = 'This is my string'; // print This is my string

2) سلاسل اقتباس مزدوجة:

$str = 'string';

$string = "This is my $str"; // print This is my string

3) هيريدوك:

$string = <<<EOD
This is my string
EOD; // print This is my string

4) نودوك (منذ فب 5.3.0):

$string = <<<'END_OF_STRING'
    This is my string 
END_OF_STRING; // print This is my string



نول كواليسينغ أوبيراتور (؟؟)

تمت إضافة هذا المشغل في فب 7.0 للحالة الشائعة من الحاجة إلى استخدام مشغل الثلاثي بالتزامن مع إسيت (). ترجع المعامل الأول إذا كان موجودا وليس نول؛ وإلا فإنه يعود المعامل الثاني.

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>



سؤال:

ماذا يعني => يعني؟

إجابة:

=> هل الرمز الذي قررنا البشر استخدامه لفصل أزواج "Key" => "Value" في صفائف الارتباط.

وتعليقا:

لفهم هذا، علينا أن نعرف ما هي صفائف أسوسياتيف. أول شيء أن يأتي عندما مبرمج التقليدية يعتقد من مجموعة ( في فب ) سيكون شيئا مماثلا ل:

$myArray1 = array(2016, "hello", 33);//option 1

$myArray2 = [2016, "hello", 33];//option 2

$myArray3 = [];//option 3
$myArray3[] = 2016; 
$myArray3[] = "hello"; 
$myArray3[] = 33;

أين، إذا أردنا استدعاء الصفيف في جزء لاحق من التعليمات البرمجية، يمكننا القيام بما يلي:

echo $myArray1[1];// output: hello
echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello

حتى الان جيدة جدا. ومع ذلك، كبشر، قد نجد صعوبة في تذكر أن الفهرس [0] من المصفوفة هو قيمة عام 2016، فهرس [1] من المصفوفة هو تحيات ، وفهرس [2] من المصفوفة بسيط قيمة صحيحة . البديل الذي سنستخدمه بعد ذلك هو استخدام ما يسمى صفيف الجمعيات . يوجد صفيف ارتباطي يحتوي على بعض الاختلافات من صفيف متسلسل ( وهو ما كانت الحالات السابقة منذ زيادة الفهرس المستخدم في تسلسل محدد سلفا، من خلال زيادة بمقدار 1 لكل قيمة تالية ).

الاختلافات ( بين صفيف متسلسل وترابطي ):

  • دورينغ إعلان مصفوفة ارتباطية، لا تتضمن فقط value ما تريد وضعه في المصفوفة، ولكن أيضا وضع قيمة الفهرس (تسمى key ) الذي تريد استخدامه عند استدعاء الصفيف في أجزاء لاحقة من التعليمات البرمجية. يتم استخدام بناء الجملة التالي أثناء إعلانه: "key" => "value" .

  • عند استخدام صفيف الارتباط، سيتم وضع قيمة key داخل فهرس المصفوفة لاسترداد value المطلوبة.

على سبيل المثال:

    $myArray1 = array( 
        "Year" => 2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33);//option 1

    $myArray2 = [ 
        "Year" =>  2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33];//option 2

    $myArray3 = [];//option 3
    $myArray3["Year"] = 2016; 
    $myArray3["Greetings"] = "hello"; 
    $myArray3["Integer_value"] = 33;

والآن، لتلقي نفس الإخراج كما كان من قبل، سيتم استخدام القيمة key في فهرس المصفوفات:

echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello
echo $myArray3["Greetings"];// output: hello

النقطة الأخيرة:

لذلك من المثال السابق، من السهل جدا أن نرى أن الرمز => يستخدم للتعبير عن علاقة صفيف ارتباط بين كل من أزواج key وأزواج value في مصفوفة أثناء بدء القيم داخل المصفوفة.




نول كواليسيس مشغل فب

وقد تمت إضافة عامل التجميع الفارغ (؟؟) إلى PHP7 للحالة الشائعة التي تحتاج إلى استخدام الثلاثي بالتزامن مع إسيت (). تقوم بإرجاع المعامل الأول إذا كان موجودا وليس نول وإلا فإنه يعيد معاملته الثانية، مثل المثال التالي:

$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 



سؤال :

ماذا يعني "&" هنا في فب؟

فب "&" المشغل

يجعل الحياة أكثر سهولة بمجرد أن تعتاد على ذلك .. (راجع المثال أدناه بعناية)

وعادة ما يتحقق بت التي تم تعيينها في كل من $ a و $ b يتم تعيين.

هل لاحظت حتى كيف تعمل هذه المكالمات؟

   error_reporting(E_ERROR | E_WARNING | E_PARSE);
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    error_reporting(E_ALL & ~E_NOTICE);
    error_reporting(E_ALL);

لذلك وراء كل ما سبق هو لعبة المشغل بتة وبتات.

حالة واحدة مفيدة من هذه هي تكوينات سهلة مثل إعطاء أدناه، لذلك حقل صحيح واحد يمكن تخزين الآلاف من المجموعات بالنسبة لك.

معظم الناس قد قرأوا المستندات بالفعل ولكنهم لم يعولوا على حالة استخدام العالم الحقيقي لهذه العوامل.

مثال على أنك سوف الحب

<?php

class Config {

    // our constants must be 1,2,4,8,16,32,64 ....so on
    const TYPE_CAT=1;
    const TYPE_DOG=2;
    const TYPE_LION=4;
    const TYPE_RAT=8;
    const TYPE_BIRD=16;
    const TYPE_ALL=31;

    private $config;

    public function __construct($config){
        $this->config=$config;

        if($this->is(Config::TYPE_CAT)){
            echo 'cat ';
        }
        if($this->is(Config::TYPE_DOG)){
            echo 'dog ';
        }
        if($this->is(Config::TYPE_RAT)){
            echo 'rat ';
        }
        if($this->is(Config::TYPE_LION)){
            echo 'lion ';
        }
        if($this->is(Config::TYPE_BIRD)){
            echo 'bird ';
        }
        echo "\n";
    }

    private function is($value){
        return $this->config & $value;
    }
}

new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird



== يستخدم للتحقق من المساواة دون النظر في البيانات المتغيرة من نوع

=== تستخدم للتحقق من المساواة لكل من القيمة المتغيرة وكل من هذا المتغير من نفس نوع البيانات

مثال

$ a = 5؛

  1. إذا ($ a == 5) - سيعود صحيح

  2. إذا كان ($ a == '5') - فإنه سيعود صحيح، لأنه أثناء مقارنة كل من قيمة فب داخليا تحويل قيمة السلسلة إلى عدد صحيح ومن ثم مقارنة كل من قيمة

  3. إذا ($ a === 5) - سيعود صحيح.

  4. إذا ($ a === '5') - سيعود كاذبة لأن القيمة 5 ولكن هذه القيمة 5 ليست نوع صحيح.