如何将ob_get_contents与带参数的函数一起使用

How to use ob_get_contents with a function with arguments

提问人:Cain Nuke 提问时间:6/26/2019 最后编辑:Cain Nuke 更新时间:6/26/2019 访问量:242

问:

我有一个这样的功能:

function show_aval($place) {
//some function
}

我想把它翻译成一个变量,所以我这样做:

ob_start();
show_aval(london);
$avalrooms = ob_get_contents();
ob_clean();

如果参数始终是“伦敦”,那将很好,但事实并非如此。它可能会更改为约克或曼彻斯特等。我的问题是,我能做些什么来通过这样的变量来指示参数:、、等,而不必逐个声明每个变量。$avalrooms["london"]$avalrooms["york"]$avalrooms["liverpool"]

编辑:

代码如下:

ob_start();
show_aval(london);
$show_aval = ob_get_contents();
ob_clean();

ob_start();
show_aval(york);
$show_aval2 = ob_get_contents();
ob_clean();

ob_start();
show_aval(liverpool);
$show_aval3 = ob_get_contents();
ob_clean();

会起作用,但它的代码太多了。我尝试过 foreach,但这似乎ob_get_contents无效。

php ob-get-contents

评论

0赞 Lawrence Cherone 6/26/2019
在 ob_* 代码之前设置某个位置,然后 do ,但为什么不能更改为 return 而不是 echo,或者为什么ob_code不能进入该函数?$placeshow_aval($place);show_aval
0赞 ArtisticPhoenix 6/26/2019
这是一个未定义的常量、警告或通知(取决于您的 PHP 版本)。PHP 假设你的意思是(作为字符串),但你应该使用变量或引号:sandbox。您也可以直接使用 和"london"$avalrooms = ob_get_clean();$avalrooms = ob_get_contents();ob_clean();
0赞 Cain Nuke 6/26/2019
因为代码在我声明变量时执行,而没有ob_code。

答:

1赞 Barmar 6/26/2019 #1

将城市放在一个数组中,遍历数组,并将它们用作函数参数和数组索引。

$avalrooms = [];
$cities = ["london", "york", "liverpool"];
foreach ($cities as $city) {
    ob_start();
    show_aval($city);
    $avalrooms[$city] = ob_get_contents();
    ob_clean();
}

评论

0赞 Cain Nuke 6/26/2019
有些奇怪。似乎是 ob_get_contents();不起作用,因为代码出现在页面的开头,这意味着它在声明变量时被执行。
0赞 Barmar 6/26/2019
我忘记了后面的括号。现在就试试吧。ob_clean