PHP函数返回或带变量的echo

时间:2014-01-05 12:19:28

标签: php progress-bar twitter-bootstrap-3 user-defined-functions

所以我使用的函数在HTML中的两个不同位置使用,如下所示。

function remaining($expDate,$output){
 $dStart = new DateTime(date('Y-m-d'));
    $dEnd  = new DateTime(date('Y-m-d ',strtotime($expDate)));

    $dDiff = $dStart->diff($dEnd);
     $dDiff->format('%R'); 

  if($output = "return"){
        return $dDiff->days;
    }else{
        echo $dDiff->days;}
}
<div 
  class="progress-bar <?php if(remaining($expDate,"return")==90){echo"progress-bar-success";}else{echo "progress-bar-danger";}?> 
  role="progressbar" 
  aria-valuenow="40" 
  aria-valuemin="0" aria-valuemax="100" 
  style="width: <?php remaining($expDate,"echo") ?>%">

当我返回值style时,部分不起作用,当我在if()语句中回显时,我得到了值:(所以我尝试添加第二个参数并给出相对输出。 我显然在这里遗漏了一些东西,但无法弄明白:(你能给我一个关于函数变量输出的提示吗?或者可能是一个更好的方法来实现这个:)

4 个答案:

答案 0 :(得分:0)

问题是if语句

This is an attribution not a comparison
if( $output = "return" ){ ...

应该是这样的:

function remaining($expDate,$output){
    $dStart = new DateTime(date('Y-m-d'));
    $dEnd  = new DateTime(date('Y-m-d ',strtotime($expDate)));
    $dDiff = $dStart->diff($dEnd);
    return $dDiff->days;
}

AH !!顺便说一下上面的代码是如何工作的,因为你没有让它成功运行 忘了这样做:<?php echo remaining()... ?>你忘记了回声!

问候。

答案 1 :(得分:0)

if($output = "return")

永远是真的,纠正它

if($output == "return")

所以程序比较并返回TRUE或FALSE

答案 2 :(得分:0)

if($output = "return"){

需要

if($output == "return"){

如果你把

if($output = "return"){

然后你有效地将$ output设置为等于return(它将始终返回true!)

答案 3 :(得分:0)

您的if语句似乎很糟糕。您正在使用'=',它听起来不像PHP中的'equals'运算符。所以只需用'=='替换你的条件中的'='。

你可能也喜欢在这里传递一个简单的布尔值(true / false)而不是字符串,但这取决于你。