2016-02-25 47 views
0

我在PHP中有一些功能,我在SQL中执行一些查询并从用户输入中获取一个数字。获取减号或加号

而我在那堆叠应该如何。

我的代码:

$x = $request->input('usd'); 
$roi = $profit/$request->input('usd'); 
$cor = $request->input('usd') - $profit; 
$prof = abs($profit); 

$data['roi'] = $roi >= 0 ? '+'. $roi : '-'. $roi; 
$data['cor'] = $cor >= $x ? '+' . $cor : '-' . $cor; 
$data['prof'] = $profit >= $x ? '+' . $prof : '-' . $prof; 

其中,例如$x = 1000$ 但它总是一个+在零下数和加 - 数字。

UPDATE:

我做在一个PHP调试我得到的零下

 $x = '1000'; 
     echo 'X: ' . $x . '<br />'; 
     $pro = '-0.59%'; 
     $roi = $pro/$x; 
     echo 'ROI: ' . $roi . '<br />'; 
     echo sprintf('ROI: ',$roi); 
     $cor = $pro - $x; 
     echo 'COR: ' . $cor . '<br />'; 
     $prof = $pro; 
     echo 'PROFIT: ' . $pro . '<br />'; 
     ?> 

,但如果我在AJAX打印其现在显示负数。 结果:

X:1000 ROI:-0.00059 ROI:COR:-1000.59 利润:-0.59%

+3

为什么不使用[sprintf()](http://www.php.net/manual/en/function.sprintf.php)和一个强制显示标志的格式掩码 - [Demo](https ://3v4l.org/tdse7) –

+0

和你想做什么?什么不能在你的代码中工作? – ogres

+0

其allways显示一个加号不是减号。喜欢:我有1000 $ - 5000 $ 它显示我4000 $,但不在减号。我需要它链接-4000 $ –

回答

1

我建议你做一些调试跟踪你的价值观。每当我遇到这样的情况时,都很高兴看到每个值如何跟踪。您可以使用调试软件,如http://phpdbg.com/或者你总是可以做手工调试,如下列:

$x = $request->input('usd'); 
    echo 'X:" $x . '<br>'; 
    $roi = $profit/$request->input('usd'); 
    echo 'ROI:" $x . '<br>'; 
    $cor = $request->input('usd') - $profit; 
    echo 'COR:" $x . '<br>'; 
    $prof = abs($profit); 
    echo 'PROF:" $x . '<br>'; 

    $data['roi'] = $roi >= 0 ? '+'. $roi : '-'. $roi; 
    echo 'data[roi]:" $x . '<br>'; 
    $data['cor'] = $cor >= $x ? '+' . $cor : '-' . $cor; 
    echo 'data[cor]:" $x . '<br>'; 
    $data['prof'] = $profit >= $x ? '+' . $prof : '-' . $prof; 
    echo 'data[prof]:" $x . '<br>'; 

调试器显然是更优雅,但有时​​简单的值跟踪手册并没有那么糟糕。

+0

奇怪的是它是$ data ['cor']和$ data ['prof']是否给你意想不到的结果?我只问,因为在$ data ['roi']中,您是基于明确的值进行比较,其他两种情况下基于变量$ x,因此再次进行调试将帮助您了解值的影响三元条件 –