PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Δυαδικοί Τελεστές> <Αριθμητικοί Τελεστές
Last updated: Sun, 25 Nov 2007

view this page in

Ανάθεση Τελεστών

Ο βασικός τελεστής ανάθεσης είναι ο "=". Η πρώτη σας σκέψη ίσως είναι ότι αυτό είναι το ίδιο με το "ισούται με". Αλλά δεν είναι. Αυτό που πραγματικά σημαίνει είναι ότι το αριστερό μέρος του τελεστή παίρνει την τιμή της έκφρασης στα δεξιά (δηλαδή, "ανατίθεται σε").

Η τιμή μιας έκφρασης ανάθεσης είναι η τιμή που της ανατίθεται. Δηλαδή, η τιμή του "$a = 3" είναι 3. Αυτό σας επιτρέπει να κάνετε μερικά περίπλοκα πράγματα:

$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.

Πέρα από το βασικό τελεστή ανάθεσης, υπάρχουν "σύνθετοι τελεστές" για όλους τους δυαδικούς αριθμητικούς και αλφαριθμητικούς τελεστές που σας επιτρέπουν να χρησιμοποιήσετε μια έκφραση και στη συνέχεια να θέσετε την τιμή στο αποτέλεσμα της έκφρασης. Για παράδειγμα:

$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";

Σημειώστε ότι η ανάθεση αντιγράφει την αρχική μεταβλητή στην καινούρια (ανάθεση με τιμή), συνεπώς αλλαγές στο ένα δε θα επηρεάσουν το άλλο. Αυτό μπορεί επίσης να έχει σχέση αν χρειαστεί να αντιγράψετε κάτι όπως έναν μεγάλο πίνακα μέσα σε ένα στενό loop. Η PHP 4 υποστηρίζει την ανάθεση με αναφορά, χρησιμοποιώντας τη $var = &$othervar; σύνταξη, αλλά αυτό δεν είναι δυνατό στην PHP 3. 'Ανάθεση με αναφορά' σημαίνει πως και οι δυο μεταβλητές καταλήγουν στο να δείχνουν στα ίδια δεδομένα, και τίποτα δεν αντιγράφεται πουθενά. Για να μάθετε περισσότερα για τις αναφορές, διαβάστε το Επεξήγηση των αναφορών.



add a note add a note User Contributed Notes
Ανάθεση Τελεστών
Paul Ebermann
29-Apr-2008 06:07
There is also a array-append-Operator:

<?php
   $array
[]= $element;
?>

This appends the element to the end of the array, as
<?php
   array_push
($array, $element);
?>
would do.
(This is documented on the array_push page, but not here in the operator section.)
Hayley Watson
05-Feb-2008 05:54
You could also take adam at gmail dot com's xor-assignment operator and use the fact that it's right-associative:

$a ^= $b ^= $a ^= $b;
Hayley Watson
07-Oct-2007 03:22
bradlis7 at bradlis7 dot com's description is a bit confusing. Here it is rephrased.

<?php
$a
= 'a';
$b = 'b';

$a .= $b .= "foo";

echo
$a,"\n",$b;?>
outputs

abfoo
bfoo

Because the assignment operators are right-associative and evaluate to the result of the assignment
<?php
$a
.= $b .= "foo";
?>
is equivalent to
<?php
$a
.= ($b .= "foo");
?>
and therefore
<?php
$b
.= "foo";
$a .= $b;
?>
adam at gmail dot com
25-Aug-2006 10:38
or you could use the xor-assignment operator..
$a ^= $b;
$b ^= $a;
$a ^= $b;
bradlis7 at bradlis7 dot com
15-Aug-2005 08:13
Note whenever you do this

<?php
$a
.= $b .= "bla bla";
?>

it comes out to be the same as the following:

<?php
$a
.= $b."bla bla";
$b .= "bla bla";
?>

So $a actually becomes $a and the final $b string. I'm sure it's the same with numerical assignments (+=, *=...).
straz at mac dot nospam dot com
20-Feb-2004 10:18
This page really ought to have table of assignment operators,
namely,

See the Arithmetic Operators page (http://www.php.net/manual/en/language.operators.arithmetic.php)
Assignment    Same as:
$a += $b     $a = $a + $b    Addition
$a -= $b     $a = $a - $b     Subtraction
$a *= $b     $a = $a * $b     Multiplication
$a /= $b     $a = $a / $b    Division
$a %= $b     $a = $a % $b    Modulus

See the String Operators page(http://www.php.net/manual/en/language.operators.string.php)
$a .= $b     $a = $a . $b       Concatenate

See the Bitwise Operators page (http://www.php.net/manual/en/language.operators.bitwise.php)
$a &= $b     $a = $a & $b     Bitwise And
$a |= $b     $a = $a | $b      Bitwise Or
$a ^= $b     $a = $a ^ $b       Bitwise Xor
$a <<= $b     $a = $a << $b     Left shift
$a >>= $b     $a = $a >> $b      Right shift

 
show source | credits | stats | sitemap | contact | advertising | mirror sites