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




operators symbols (12)

Bitwise المشغل

ما هو الشيء؟ A bit is a representation of 1 or 0. Basically OFF (0) and ON (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 بايت)

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

عامل التشغيل "AND": &

$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.

عامل التشغيل "Or": |

$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.

ما هذا؟

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

لماذا هذا؟

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

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

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

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

القائمة

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

& Bitwise Operators أو References

=& References

&= Bitwise Operators

&& Operational Operators

العاملون الحسابيون %

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

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

?: المشغل الثلاثي

?? مشغل Null Coalesce (منذ PHP 7)

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

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

\ Namespaces

-> فئات وأشياء

=> Arrays

^ مشغلات Bitwise

>> مشغلي Bitwise

<< مشغلي Bitwise

<<< Heredoc or Nowdoc

= مشغلي التكليف

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

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

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

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

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

<=> مقارنة (منذ PHP 7.0)

  • مشغل سفينة الفضاء (مقارنة ثلاثية)

| مشغلات bitwise

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

~ مشغلي Bitwise

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

+= و -= مشغلي التكليف

++ و -- زيادة / انخفاض مشغلي

.= مشغلي التكليف

. مشغلي السلسلة

وسائط الوسيط

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

متغيرات متغيرة

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

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

[] Arrays (بناء الجملة القصير منذ PHP 5.4)

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

... الحجة تفريغ (منذ PHP 5.6)

** Exponentiation (منذ PHP 5.6)

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


اكتب مشغلي

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

<?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)

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

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

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

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

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

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

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

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

قبل PHP 7 تكتب ...

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

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

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

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

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

مشغل سفينة الفضاء <=> (مضاف في PHP 7)

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

الأعداد الصحيحة ، العوامات ، السلاسل ، المصفوفات والأشياء من أجل المقارنة بين المتغيرات ثلاثية الاتجاهات.

// 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

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

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

مثال

$a = 5

  1. if ($a == 5) - سوف تقيم على حقيقتها

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

  3. if ($a === 5) - سوف تقيم على حقيقتها

  4. if ($a === '5') - سيتم تقييمه إلى false ، نظرًا لأن القيمة 5 ، ولكن هذه القيمة 5 ليست عددًا صحيحًا.



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

++ زيادة عامل

-- مشغل تناقص

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-- ، أولًا ، تريد عرض العدد الحالي من التفاح ، ثم تريد طرح واحد منه.

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

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

بمجرد الوصول إلى z هو aa ، وهكذا.

لاحظ أنه يمكن زيادة متغيرات الأحرف ولكن لا يتم إنقاصها ومع ذلك يتم دعم أحرف ASCII البسيطة (az و AZ) فقط.

المشاركات:


Null Coalesce Operator php

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

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

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

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

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

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

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

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

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

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

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

Source


سؤال:

ماذا =>تعني؟

إجابة:

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

وتعليقا:

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

$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أزواج في مجموعة أثناء بدء القيم ضمن مجموعة.


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

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) Heredoc:

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

4) Nowdoc (منذ PHP 5.3.0):

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

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"






php-5.3