如何在函数中使用return而不是多个echo


How to use return instead of multiple echos in a function?

我有一个包含3个回声的函数。我想要的只是一次回报。我如何重建函数,以便用返回值替换那些回声?

尤其是前部分对我来说似乎是一个问题。

function display_customer_table() {
    echo '
        <div class="table-responsive">
            <form method="post">
                <table class="table table-hover table-striped yc_table">
                    <tr>
                        <th>#</th>
                        <th>Anrede</th>
                        <th>Name</th>
                        <th>E-Mail</th>
                        <th>Website</th>
                        <th>Datum</th>
                        <th>Kontaktiert von</th>
                        <th>Angerufen?</th>
                    </tr>';
            foreach ($get_uncontacted_members as $get_uncontacted_member) {
            $timestamp = strtotime($get_uncontacted_member->date);
                echo '
                    <tr>
                        <td>' . $num++ . '</td>
                        <td>' . $get_uncontacted_member->anrede . '</td>
                        <td>' . $get_uncontacted_member->receiver . '</td>
                        <td><a target="_blank" href="mailto:'. $get_uncontacted_member->email .'">' . $get_uncontacted_member->email . '</a></td>
                        <td><a target="_blank" href="http://'. $get_uncontacted_member->website .'">' . $get_uncontacted_member->website . '</a></td>
                        <td>' . date("d.m.Y, H:i", $timestamp) . '</td>
                        <td>' . $get_uncontacted_member->mitarbeiter . '</td>
                        <td><i title="Zielperson wurde telefonisch kontaktiert" id="' . $get_uncontacted_member->id . '" class="fa fa-phone-square called"></i></td>
                    </tr>';
                }
echo '          </table>
            </form>
        </div>';
}

试试这个:

function display_customer_table() {
    $output = '
        <div class="table-responsive">
            <form method="post">
                <table class="table table-hover table-striped yc_table">
                    <tr>
                        <th>#</th>
                        <th>Anrede</th>
                        <th>Name</th>
                        <th>E-Mail</th>
                        <th>Website</th>
                        <th>Datum</th>
                        <th>Kontaktiert von</th>
                        <th>Angerufen?</th>
                    </tr>';
            foreach ($get_uncontacted_members as $get_uncontacted_member) {
            $timestamp = strtotime($get_uncontacted_member->date);
                $output .= '
                    <tr>
                        <td>' . $num++ . '</td>
                        <td>' . $get_uncontacted_member->anrede . '</td>
                        <td>' . $get_uncontacted_member->receiver . '</td>
                        <td><a target="_blank" href="mailto:'. $get_uncontacted_member->email .'">' . $get_uncontacted_member->email . '</a></td>
                        <td><a target="_blank" href="http://'. $get_uncontacted_member->website .'">' . $get_uncontacted_member->website . '</a></td>
                        <td>' . date("d.m.Y, H:i", $timestamp) . '</td>
                        <td>' . $get_uncontacted_member->mitarbeiter . '</td>
                        <td><i title="Zielperson wurde telefonisch kontaktiert" id="' . $get_uncontacted_member->id . '" class="fa fa-phone-square called"></i></td>
                    </tr>';
                }
$output .= '          </table>
            </form>
        </div>';
return $output;
}

还要注意,您的代码不是很整洁,也就是说,因为您一直将字符串与变量连接在一起。看一下sprintf函数

先设置一个空变量:

$return = "";

不写echo,只写

$return .=

然后你可以(在函数的末尾)说:

return $return;

的例子:

echo '          </table>
        </form>
    </div>';
去:

$return .= '          </table>
        </form>
    </div>';