如何在php中的函数中返回值?

时间:2016-05-24 04:49:59

标签: php function

我最近开始使用PHP,我正在尝试创建一个函数,它将返回我想要显示的内容。这意味着我需要将这些内容的值存储在每个case块的变量中,然后在结尾处返回该变量值。

<?php
    function sidebarContent($id) {
        switch ($id) {
            case "21":
                // how to store these values in a variable
                <p>Hello ABC.</p>
                <p class="content-register"><a href="/abc">Abc</a></p>
                break;
            case "31":
                // how to store these values in a variable
                <p>Hello DEF.</p>
                <p class="content-register"><a href="/Def">Def</a></p>  
                break;
            case "41":
                // how to store these values in a variable              
                echo "Your favorite color is green!";
                <p>Hello GHI.</p>
                <p class="content-register"><a href="/Ghi">Ghi</a></p>          
                break;
            default:
                // how to store these values in a variable              
                <p>Hello World.</p>
        }

        // how do I return content here?
    }

    // call above function to test out
?>

我无法理解如何在变量中存储内容值然后在结尾处返回?

3 个答案:

答案 0 :(得分:1)

将可打印的分配给变量,然后像这样返回:

<?php

function sidebarContent($id) {
    switch ($id) {
        case "21":
        $return = '<p>Hello ABC.</p>
        <p class="content-register"><a href="/abc">Abc</a></p>';
        break;
        case "31":
        $return = '<p>Hello DEF.</p>
        <p class="content-register"><a href="/Def">Def</a></p>';
        break;
        case "41":
        $return = 'Your favorite color is green!";
        <p>Hello GHI.</p>
        <p class="content-register"><a href="/Ghi">Ghi</a></p>';
        break;
        default:
        $return = '<p>Hello World.</p>';
    }

    return $return;
}

echo sidebarContent(31);

将打印:

Hello DEF.

Def

Demo

答案 1 :(得分:1)

您不必存储任何内容,您确实可以立即输出,除非您有进一步的过滤或处理步骤。那么你确实可以通过=运算符将字符串赋值给变量,或者你可以使用“output buffering”,或者如下所示直接返回文字标记。

如果您决定返回有效负载,那么我建议采用这种方法,它允许清晰的html标记仍然可读:

<?php
function sidebarContent($id) {
    switch ($id) {
        case 21:
            return <<<EOT
<p>Hello ABC.</p>
<p class="content-register"><a href="/abc">Abc</a></p>
EOT;
        case 31:
            return <<<EOT
<p>Hello DEF.</p>
<p class="content-register"><a href="/Def">Def</a></p>  
EOT;
        case 41:
            return <<<EOT
Your favorite color is green!
<p>Hello GHI.</p>
<p class="content-register"><a href="/Ghi">Ghi</a></p>          
EOT;
        default:
            return <<<EOT
<p>Hello World.</p>
EOT;
    }
}

echo sidebarContent(111);

请注意缺少关闭的php标记(?>)。不要使用它。它会产生巨大的问题,在大多数情况下并没有真正帮助......

答案 2 :(得分:0)

更好的方法是尽可能简单地保存存储在变量中的数据,以便减少使用的内存。至于你的开关语句,我可以发现大多数情况都使用相同的格式,这导致我将每个案例的具体日期分开。

<?php
function sidebarContent($id) {
    $name = 'World';
    $extra = '';

    switch ($id) {
        case "21":
            $name = 'Abc';
            break;
        case "31":
            $name = 'Def';
            break;
        case "41":
            $name = 'Ghi';
            $extra = 'Your favorite color is green!';
    }

    return $extra . ' <p>Hello ' . strtoupper($name) . '.</p>' . 
           '<p class="content-register"><a href="/' . $name . '">' . $name . '</a></p>';
}

所以上面的代码说每个案例修改存储在2个变量中的数据(每个变量至少1个),然后返回我的HTML代码和存储变量的数据。这样您就可以保持代码清洁简单。

对此功能的调用可能如下:

echo sidebarContent(21); // Output the template
$my_sidebar = sidebarContent(21); // Store the template for later statements
  

注意:如果将此函数保留在没有HTML代码的PHP文件中,   您可以删除结束的PHP标记:?&gt;