0

我目前正在为我正在处理的脚本编写一些函数。我的问题是,生成内容的方式是由 php 变量。

所以,要生成页面内容,它必须是这样的:

$contents .="page content inside this";

如果我echo这样做:

echo "page content inside this";

然后回显的文本将出现在页面顶部。因此,我必须使用$contents.="";才能生成页面内容。

我目前正在编写一个可以快速生成复选框的函数。我的功能如下所示:

function checkbox($name, $value, $checked){

    if($checked == 1){
        $checked = "checked"; 
    }else{ 
        $checked ="";
    }

    $contents.="<div class='roundedOne'>
   <input type='checkbox' value='$value' id='roundedOne' name='$name' $checked />
   <label for='roundedOne'></label>
  </div>";

}

当我在页面内调用该函数时,什么也没有出现:

$contents.="
".checkbox("name","value","1")."
";

我可以想象,当我调用该函数时没有发生任何事情的原因是我使用$contents了而不是echo,但不幸的是,这是我唯一的选择,因为脚本是加密的,所以我无法改变$contents行为方式。

我的问题是,如何使用 $contents 打印函数?

4

6 回答 6

0

您需要$contents在函数内部使用它之前声明为全局(不推荐) -

global $contents;
$contents.="<div class='roundedOne'>
     <input type='checkbox' value='$value' id='roundedOne' 
     name='$name' $checked />
     <label for='roundedOne'></label>
     </div>";

或者,更好的是,您可以从您的函数生成内容,然后将其返回 -

function checkbox($name, $value, $checked){

    if($checked == 1){
        $checked = "checked"; 
    }else{ 
        $checked ="";
    }

    return "<div class='roundedOne'>
       <input type='checkbox' value='$value' id='roundedOne' name='$name' 
       $checked />
       <label for='roundedOne'></label>
       </div>";        
}

$contents.= checkbox("name","value","1");

此外,您正在更改$checked函数内参数的类型。强烈建议不要使用这种编码方式。尽量不要用这种方式改变变量的类型,这样会省去很多麻烦。

于 2013-08-31T10:31:57.163 回答
0

使用global $contents或在您的功能结束时return $contents

于 2013-08-31T10:32:38.077 回答
0

你从函数中返回了什么。从函数返回字符串。或使用 $content 作为 Oliverbj 建议的全局变量

于 2013-08-31T10:34:25.537 回答
0

您的函数没有返回值。

所以你没有得到任何来自checkbox函数的响应。

只需return $contents要从函数开始,然后回显该结果将为您做。

function checkbox($name, $value, $checked){

    if($checked == 1){
        $checked = "checked"; 
    }else{ 
        $checked ="";
    }

    $contents.="<div class='roundedOne'>
   <input type='checkbox' value='$value' id='roundedOne' name='$name' $checked />
   <label for='roundedOne'></label>
  </div>";
  return $contents;
}

然后,

echo $contents;
于 2013-08-31T11:06:17.240 回答
0

不确定我是否正确理解您的问题。您是否尝试过使用global

<?php

$contents = "string string string";

function checkbox($name, $value, $checked){

    global $contents;

    if($checked == 1){
        $checked = "checked"; 
    }else{ 
        $checked ="";
    }

    $contents.="<div class='roundedOne'>
   <input type='checkbox' value='$value' id='roundedOne' name='$name' $checked />
   <label for='roundedOne'></label>
  </div>";

}

$contents.=" ".checkbox("name","value","1")." ";

echo $contents;

?>
于 2013-08-31T10:36:37.573 回答
0

$contentsfrom 函数的返回值。

使用这种方式,您可以获得$contents页面内部的价值。

喜欢,

function checkbox($name, $value, $checked){

    if($checked == 1){
        $checked = "checked"; 
    }else{ 
        $checked ="";
    }

    $contents.="<div class='roundedOne'>
   <input type='checkbox' value='$value' id='roundedOne' name='$name' $checked />
   <label for='roundedOne'></label>
  </div>";
  return $contents;
}
于 2013-08-31T10:37:42.553 回答