2016-02-02 24 views
5

Kiedy pisałem coś dziwnego, pisałem mały program. Jeśli chciałbym, aby PHP przedstawiało operacje arytmetyczne dodawania lub odejmowania za pomocą instrukcji echo, a wynik operacji musiałem dodać nawiasy lub stronę html, nie przedstawiłbym operacji, ale tylko wynik.Dlaczego musisz dodawać nawiasy do + - operacji przy konkatenacji?

Poniżej znajduje się zredukowany przykład.

pierwszym przypadku (bez nawiasów):

$a = 10; 
$b = 5; 
echo "$a + $b = ".$a + $b."<br>"; // 15 
echo "$a - $b = ".$a - $b."<br>"; // 5 
echo "$a * $b = ".$a * $b."<br>"; // 10 * 5 = 50 
echo "$a/$b = ".$a/$b."<br>"; // 10/5 = 2 
echo "$a % $b = ".$a % $b."<br>"; // 10 % 5 = 0 

drugim przypadku (z nawiasami):

$a = 10; 
$b = 5; 
echo "$a + $b = ".($a + $b)."<br>"; // 10 + 5 = 15 
echo "$a - $b = ".($a - $b)."<br>"; // 10 - 5 = 5 
echo "$a * $b = ".($a * $b)."<br>"; // 10 * 5 = 50 
echo "$a/$b = ".($a/$b)."<br>"; // 10/5 = 2 
echo "$a % $b = ".($a % $b)."<br>"; // 10 % 5 = 0 

Czy ktoś może wyjaśnić, dlaczego tak się dzieje?

+3

w dwóch słowach, [ "__Operator Precedence__"] (http: //www.php. net/manual/pl/language.operators.precedence.php) –

+1

@MarkBaker Przepraszamy, chociaż pierwszeństwo operatorów z pewnością odgrywa tutaj rolę, nie jest jasne, dlaczego OP otrzymuje opisową wydajność. Sprawdziłem i otrzymałem taki sam wynik. Skoro najwyraźniej wiesz, co się dzieje, czy mógłbyś rozwinąć swój komentarz? Dzięki! – arkascha

+0

Wskazówka dotycząca użycia 'echo'. Nie łączcie się! Zamiast tego użyj ','. Na przykład. 'echo" $ a + $ b = ", $ a + $ b,"
";' Nigdy więcej nie napotkasz tych problemów. – Yoshi

Odpowiedz

4

z link Mark Baker widać, że

dodawanie, odejmowanie, a ciąg konkatenacji mają równe pierwszeństwo!

w echo "$a + $b = ".$a + $b."<br>"; //15

złączyć pierwszego ciągu dosłowny, a wartość $a, następnie niejawnie przekonwertować na numer (10), dzięki czemu można dodać $b do niego, a następnie złączyć końcowy ciąg dosłowne.

kiedy można umieścić go w nawiasach, dodatek jest traktowana jako numer (15) W związku żadne operacje matematyczne sznurkiem

+0

, które mają sens dzięki :) – Tim8288

+0

Tak więc odpowiedź na pytanie OP brzmi: "niejawna konwersja typu z ciągu na numeryczną jest wykonywana przed oceną' + ' Operator: – arkascha

+0

Którego jeszcze nie rozumiem Jak powinna być konwersja typu "10 + 5 = 10" do pracy numerycznej? – arkascha