json php函数中返回html表

r55awzrz  于 2023-03-31  发布在  PHP
关注(0)|答案(4)|浏览(140)

我是PHP新手,我来自Objective-C。我需要为WP创建一个插件,该插件返回一个HTML表,其中每行都由JSON中的数据填充。本质上,作为一个示例,我需要将echo替换为return

$jsonurl = "http://xxxx/club/api/xxxx/category/";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);
//print_r ($json_output);

echo "<table>";
foreach ( $json_output->result as $result )
{
    echo "<tr><td>".$result->id."</td><td>".$result->categoryKind."</td><td>".$result->ranking."</td>";
}
echo "</table>" ;

这工作!我可以看到预期的输出.但通过Shortcode在WP中显示表,我需要return和没有echo.那么我怎么能用return替换echo
我试过:

function foobar_func(){

    $html= "<table>";

    foreach ( $json_output->result as $result )
    {
        $html. = "<tr><td>".$result->id."</td><td>".$result->categoryKind."</td><td>".$result->ranking."</td>";
    }
    $html. = "</table>" ;

    return $html;
}

add_shortcode( 'foobar', 'foobar_func' );

没有成功。任何帮助都是受欢迎的。

UPDATE:结果相同(没有工作),我会疯狂退出。

function foobar_func($json_output){

    $html= "<table>";
    foreach ( $json_output->result as $result )
    {
        $html. = "<tr><td>".$result->id."</td><td>".$result->categoryKond."</td>  <td>".$result->ranking."</td>";
    }
    $html. = "</table>" ;

    return $html;
}

add_shortcode( 'foobar', 'foobar_func' );
t5fffqht

t5fffqht1#

请尝试ob_start()方法,我认为它对你有用。http://php.net/manual/en/function.ob-start.php

<?php
function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>
djp7away

djp7away2#

变量作用域是这里的问题。$json_output在函数中不可访问。
更改为以下内容:

function foobar_func(){

global $json_output;

$html= "<table>";

除了将其作为全局变量调用之外,您还可以在函数调用中传递它。

function foobar_func($json_output){

然后在调用函数时,使用foobar_func($json_output)

zzlelutf

zzlelutf3#

经过调查我找到了出路。但老实说,我不明白为什么这个代码的工作。谢谢大家把我的正确道路。
验证码:

function foobar_func($json_output){
    $jsonurl = "http://xxxx/club/api/xxx/category/";
    $json = file_get_contents($jsonurl,0,null,null);
    $json_output = json_decode($json);
    echo "<table>";
    foreach ( $json_output->result as $result )
    {
        echo "<tr><td>".$result->id."</td><td>".$result->categoryKind."</td><td>".$result->ranking."</td>";
    }
    echo "</table>" ;
    return $html;
}
add_shortcode( 'foobar', 'foobar_func' );
xmjla07d

xmjla07d4#

如果有人仍然面临这个问题:
1.剪切函数内部的所有内容,只返回任何字符串:

function foobar_func(){
    return "Hi";
}
add_shortcode('foobar', 'foobar_func');

1.发布您的页面
1.返回到您的 * functions.php *
1.return“Hi”;
1.将完整代码粘贴到函数内部
该页面将从您的代码中获取输出,而无需再次发布它。

相关问题