2013-08-12 3 views
1

Интересно, можем ли мы выполнить некоторую арифметическую операцию, например $ x + $ y, в строковой цитате?Можем ли мы выполнить некоторую арифметическую операцию в двойных кавычках?

// Expected result is: 
// 5 + 11 = 16 
echo "$x + $y = {$x+$y}"; // Parse error 
echo "$x + $y = {$x}+{$y}"; // 5 + 11 = 5+11 
echo "$x + $y = ${x+y}"; // 5 + 11 = 
+6

Почему это должно быть внутри кавычек? Чего вы пытаетесь достичь? Почему бы не конкатенировать ответ? 'echo '$ x + $ y =". ($ x + $ y); ' – naththedeveloper

+4

http://stackoverflow.com/questions/12692727/how-to-make-a-calculator-in-php - но что бы вы ни делали do, не позволяйте никому убеждать вас использовать eval() –

+1

@FDL Я пытаюсь поставить его в тройной оператор. – weeix

ответ

2

Интересно, если мы можем сделать некоторые арифметические операции, как $ х + $ у, в пределах строки цитаты?

Да, вы можете. Вы можете просто позволить PHP выполнить капиляцию арифметической операции, а затем назначить ее переменной и вывести ее.

Вы также можете сделать это внутри двойных кавычках (Demo):

<?php 
// @link http://stackoverflow.com/a/18182233/367456 
// 
// Expected result is: 
// 5 + 11 = 16 

$x = 5; 
$y = 11; 

echo "$x + $y = ${0*${0}=$x + $y}"; # prints "5 + 11 = 16" 

Однако это, вероятно, не то, что вы ищете.

+0

Ничего себе, это круто!На самом деле есть способ сделать это, хотя для меня это выглядит довольно сложно. Мне любопытно узнать, как '$ {}' и '0 * $ {0}' работать сэр. – weeix

+1

Квадратные скобки позволяют вам предоставить строковое выражение в виде имени переменной. Здесь выражение равно '0', поэтому переменная' $ 0' (которая не может быть записана без скобок, иначе это будет синтаксис недопустимого имени переменной). Поскольку вы можете поместить выражение в скобки, оно также используется для назначения этой переменной '$ {0}' результата '$ x + y $', который затем умножается на ноль, дает нуль (не работает с INF или NAN расчеты). – hakre

-1

Вы выложили, что Ваш требуется выход // 5 + 11 = 16.

Вы можете попробовать нижеследующий код.

$x = 5; 
$y = 11; 
echo "$x + $y=".($x+$y); 

Я думаю, что это даст вам необходимый результат.

+2

Это даже не синтаксически правильно. $ x и $ y не будут оцениваться в одинарных кавычках, знак равенства даст ошибку синтаксического анализа, он также должен быть кавычками, результат должен быть конкатенирован. –

+0

@RoyalBg Да Вы на 100% верны. Когда я также сам пробовал это, предыдущий код также выдавал ошибку. Но теперь я редактировал свой пост. И теперь приведенный выше код дает ожидаемый результат с моей стороны. – ripa

0

Вам нужно будет сделать это так, измените строку ниже от

echo "$x + $y = {$x}+{$y}"; // 5 + 11 = 5+11 

Для

echo "$x + $y = ".($x+$y); // 5 + 11 = 16 
0

попробовать это ниже код:

<?php 
    $x =5; 
    $y =11; 
echo "$x + $y = ".($x+$y); 
?> 

, а также передать этот Fiddle

+1

Ваш код также верен. – ripa

0
echo "$x + $y = ".($x+$y); 

Вы можете сделать это так.

0

использовать следующий формат и должен нравиться

   $a=10;$b=12; 
       echo "$a+$b"."=".($a+$b); 
+0

Этот формат работает также: https://eval.in/private/61b368ca6a5e88 - так что ваш не может быть обязательным. – hakre

Смежные вопросы