如何“呼应”的函数结果到另一个函数?
我有这样的功能:如何“呼应”的函数结果到另一个函数?
function MakeInput($id, $class) {
$value = substr($id, 2);
global $$value;
echo '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.htmlentities($$value,ENT_COMPAT,'UTF-8').'" />';
}
不返回,但呼应的结果。
我想使用它,因为它是到另一个功能:
function ItkMakeMo($NomDebVar) {
$Output = '
<tr>
<td>Test</td>
</tr>
<tr>
<td>'.MakeInput($NomDebVar.'moshj','IntInput').'</td>
</tr>
';
echo $Output;
}
所以这个解决方案不起作用,PHP发送MakeInput输出的“回声$输出”前
如果由于某种原因,你不能改变MakeInput()
或将采取更多的努力比它的价值去改变它,那么你可以直接从ItkMakeMo()
呼应输出:
function ItkMakeMo($NomDebVar) {
echo '
<tr>
<td>Test</td>
</tr>
<tr>
<td>';
MakeInput($NomDebVar.'moshj','IntInput');
echo '</td>
</tr>
';
}
然后MakeInput()
输出会在正确的地方。
如果可能的话,通常最好不要在功能直接输出,而是返回输出为一个字符串,那么你可以将它输出,当你调用该函数。
,而不是在你的函数使用的回声,使用回:
function MakeInput($id, $class) {
$value = substr($id, 2);
global $$value;
return '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.htmlentities($$value,ENT_COMPAT,'UTF-8').'" />';
}
尝试返回字符串函数MakeInput而不是呼应它,
function MakeInput($id, $class) {
$value = substr($id, 2);
global $$value;
return '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.htmlentities($$value,ENT_COMPAT,'UTF-8').'" />';
}
function MakeInput($id, $class) {
$value = substr($id, 2);
global $$value;
return '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.htmlentities($$value,ENT_COMPAT,'UTF-8').'" />';
}
你应该return
值:
function MakeInput($id, $class) {
$value = substr($id, 2);
global $$value;
return '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.htmlentities($$value,ENT_COMPAT,'UTF-8').'" />';
}
后来echo
它。
你的具体情况,我想尝试呼应输出向右走,没有先在变量保存它。
function ItkMakeMo($NomDebVar) {
echo '
<tr>
<td>Test</td>
</tr>
<tr>
<td>';
MakeInput($NomDebVar.'moshj','IntInput').'</td>
echo ' </tr>
';
}
但正如别人说,那肯定是最好的改变函数返回值,而不是echo它。不仅仅是在这种情况下,而是作为一般的最佳实践。所以只有在你出于某种原因不能自己改变MakeInput的情况下才可以试试。
在第一个功能改变回声返回:
function MakeInput($id, $class) {
$value = substr($id, 2);
global $$value;
return '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.htmlentities($$value,ENT_COMPAT,'UTF-8').'" />';
}
既然你说你不希望修改MakeInput功能,使用输出缓冲。
function ItkMakeMo($NomDebVar) {
ob_start();
MakeInput($NomDebVar.'moshj','IntInput');
$input = ob_get_clean();
$Output = '
<tr>
<td>Test</td>
</tr>
<tr>
<td>'.$input.'</td>
</tr>
';
echo $Output;
}
如果您不需要$输出变量,但需要MakeInput呼应,我会遵循什么罗布建议。按照这个说法,遵循其他人写的内容,因为这对编程不佳的人来说只是一种丑陋的方式。
这个解决方案可以工作,但MakeInput仍然在ob_get_flush() – younes0 2010-11-10 10:38:50
Opps之前输出,我的意思是ob_get_clean!感谢您指出了这一点。 – 2010-11-10 10:49:34
我会使用'$ input = ob_get_contents(); ob_end_clean();'如果采取这种方法。 'ob_get_flush();'调用时输出缓冲区的内容。 编辑:Good call,@Phil R .:'ob_get_clean()'两者兼而有之。 – Aether 2010-11-10 10:49:38
在我看来,如何使用功能你不明白吗? http://php.net/manual/en/language.functions.php – MatTheCat 2010-11-10 10:22:02
大,3个答案正好30秒,一个新的记录一样???? – Grumpy 2010-11-10 10:23:07
不得不票投给他们的所有了;) – Grumpy 2010-11-10 10:23:49