2013-12-10 2 views
0
$invoiceTotal = $settings['Setting']['currency'] . $thisInvoice['Invoice']['invoice_total']; 

$bedrag = $settings['Setting']['currency'] . number_format($thisInvoice['Payment']['0']['amount'], 2, '.', ','); 

$openbedrag = $invoiceTotal - $bedrag; 

//$invoiceTotal = 2 
//$bedrag = 1 

Почему так? $openbedrag = $invoiceTotal - $bedrag; Не работает?Не удается вычислить значения

Это простой расчет, почему он не вычисляет эти переменные?

Он выводит 0 -_-

UPDATE ПРОБЛЕМА FIXED

$invoiceTotal = $settings['Setting']['currency'].$thisInvoice['Invoice']['invoice_total']; 
$bedrag = $settings['Setting']['currency'].number_format($thisInvoice['Payment']['0']['amount'], 2, '.', ','); 
$openbedrag2 = $thisInvoice['Invoice']['invoice_total'] - $thisInvoice['Payment']['0']['amount']; 
$openbedrag = $settings['Setting']['currency'].$openbedrag2; 

валюты устанавливает €

+4

Вы не можете выполнить арифметику, когда число начинается с символа валюты. – Barmar

+0

какие $ settings ['Setting'] ['currency'] эта часть содержит? значение или символ? – ripa

+0

@ripa Он предположительно содержит символ валюты, например '' 'за доллары США или' '' за британские фунты. – Barmar

ответ

1

Вы должны сделать арифметика с исходными числами, а не отформатированная из них.

$openbedrag = $thisInvoice['Invoice']['invoice_total'] - $thisInvoice['Payment']['0']['amount']; 
+0

СПАСИБО, глупо от меня. Забыл о настройках '$ ['Setting'] ['currency']' перед цифрами -.- ' – user3078542

0

преобразовать в целые числа: -

$openbedrag = ($invoiceTotal * 1.0) - ($bedrag * 1.0); 
+0

такой же вывод показывает 0 – user3078542

+0

PHP автоматически преобразует строки в целые числа, когда вы используете на них арифметические операторы. – Barmar

+0

@ user3078542: пожалуйста, убедитесь, что ваши значения валюты не имеют валютных символов – Suleman

0

если $ настройки [ 'Настройка'] [ 'валюта'] этот содержащий символ, а затем избегать использования $ настроек [ 'Настройка'] [ 'валюта'] в свое время расчета. поэтому Ваш расчет будет, как показано ниже: -

$invoiceTotal = $thisInvoice['Invoice']['invoice_total']; 

$bedrag = $thisInvoice['Payment']['0']['amount']; 

$openbedrag = $invoiceTotal - $bedrag; 

$openbedrag = $settings['Setting']['currency'].number_format($openbedrag, 2, '.', ','); 

Примечание: - также не использовать number_format в свое время расчета. использовать его при отображении времени отображения после вычисления в конечном выходе.

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