简体   繁体   中英

PHP: return value from function and echo it directly?

this might be a stupid question but …

php

function get_info() {
    $something = "test";
    return $something;
}

html

<div class="test"><?php echo get_info(); ?></div>

Is there a way to make the function automatically "echo" or "print" the returned statement? Like I wanna do this …

<div class="test"><?php get_info(); ?></div>

… without the "echo" in it?

Any ideas on that? Thank you in advance!

You can use the special tags:

<?= get_info(); ?>

Or, of course, you can have your function echo the value:

function get_info() {
    $something = "test";
    echo $something;
}

Why return when you can echo if you need to?

function 
get_info() {
    $something = "test";
    echo $something;
}

Why not wrap it?

function echo_get_info() {
  echo get_info();
}

and

<div class="test"><?php echo_get_info(); ?></div>

Have the function echo the value out itself.

function get_info() {
    $something = "test";
    echo $something;
    return $something;
}

One visit to echo 's Manual page would have yielded you the answer, which is indeed what the previous answers mention: the shortcut syntax .

Be very careful though, if short_open_tag is disabled in php.ini , shortcutting echo's won't work, and your code will be output in the HTML. (eg when you move your code to a different server which has a different configuration).

For the reduced portability of your code I'd advise against using it.

Sure,

Either print it directly in the function:

function get_info() {
    $something = "test";
    echo $something;
}

Or use the PHP's shorthand for echoing:

<?= get_info(); ?>

Though I recommend you keep the echo. It's more readable and easier to maintain returning functions, and the shorthands are not recommended for use.

You could add it as a parameter so that you can echo or return depending on the situation. Set it to true or false depending on what you would use most.

<?php
function get_info($echo = true) {

    $something = "test";

    if ($echo) {
        echo $something;
    } else {
        return $something;
    }

}

?>

<?php get_info(); ?>
<?php echo get_info(false); ?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM