Php set variable to function return

I have a PHP script that returns a random password. How do I echo out the password that is generated?


asked Feb 20, 2011 at 23:28

user547794user547794

13.8k35 gold badges100 silver badges150 bronze badges

1

As prodigitalson mentioned, you can directly echo out the return value or assign it to a variable, eg

$password = generatePassword();

answered Feb 20, 2011 at 23:31

err.. change

return $password;

to

echo $password;

Or.. better yet:

$somevar = generatePassword();
echo $somevar;

answered Feb 20, 2011 at 23:30

ariefbayuariefbayu

21.4k12 gold badges70 silver badges92 bronze badges

3

Values are returned by using the optional return statement. Any type may be returned, including arrays and objects. This causes the function to end its execution immediately and pass control back to the line from which it was called. See return for more information.

Note:

If the return is omitted the value null will be returned.

Use of return

Example #1 Use of return

function square($num)
{
    return 
$num $num;
}
echo 
square(4);   // outputs '16'.
?>

A function can not return multiple values, but similar results can be obtained by returning an array.

Example #2 Returning an array to get multiple values

function small_numbers()
{
    return [
012];
}
// Array destructuring will collect each member of the array individually
[$zero$one$two] = small_numbers();// Prior to 7.1.0, the only equivalent alternative is using list() construct
list($zero$one$two) = small_numbers();?>

To return a reference from a function, use the reference operator & in both the function declaration and when assigning the returned value to a variable:

Example #3 Returning a reference from a function

function &returns_reference()
{
    return 
$someref;
}
$newref =& returns_reference();
?>

For more information on references, please check out References Explained.

ryan dot jentzsch at gmail dot com

5 years ago

PHP 7.1 allows for void and null return types by preceding the type declaration with a ? -- (e.g. function canReturnNullorString(): ?string)

However resource is not allowed as a return type:

function fileOpen(string $fileName, string $mode): resource
{
   
$handle = fopen($fileName, $mode);
    if (
$handle !== false)
    {
        return
$handle;
    }
}
$resourceHandle = fileOpen("myfile.txt", "r");
?>

Errors with:
Fatal error: Uncaught TypeError: Return value of fileOpen() must be an instance of resource, resource returned.

rstaveley at seseit dot com

12 years ago

Developers with a C background may expect pass by reference semantics for arrays. It may be surprising that  pass by value is used for arrays just like scalars. Objects are implicitly passed by reference.

# (1) Objects are always passed by reference and returned by referenceclass Obj {
    public
$x;
}

function

obj_inc_x($obj) {
   
$obj->x++;
    return
$obj;
}
$obj = new Obj();
$obj->x = 1;$obj2 = obj_inc_x($obj);
obj_inc_x($obj2);

print

$obj->x . ', ' . $obj2->x . "\n";# (2) Scalars are not passed by reference or returned as suchfunction scalar_inc_x($x) {
   
$x++;
    return
$x;
}
$x = 1;$x2 = scalar_inc_x($x);
scalar_inc_x($x2);

print

$x . ', ' . $x2 . "\n";# (3) You have to force pass by reference and return by reference on scalarsfunction &scalar_ref_inc_x(&$x) {
   
$x++;
    return
$x;
}
$x = 1;$x2 =& scalar_ref_inc_x($x);    # Need reference here as well as the function sig
scalar_ref_inc_x($x2);

print

$x . ', ' . $x2 . "\n";# (4) Arrays use pass by value sematics just like scalarsfunction array_inc_x($array) {
   
$array{'x'}++;
    return
$array;
}
$array = array();
$array['x'] = 1;$array2 = array_inc_x($array);
array_inc_x($array2);

print

$array['x'] . ', ' . $array2['x'] . "\n";# (5) You have to force pass by reference and return by reference on arraysfunction &array_ref_inc_x(&$array) {
   
$array{'x'}++;
    return
$array;
}
$array = array();
$array['x'] = 1;$array2 =& array_ref_inc_x($array); # Need reference here as well as the function sig
array_ref_inc_x($array2);

print

$array['x'] . ', ' . $array2['x'] . "\n";

bgalloway at citycarshare dot org

14 years ago

Be careful about using "do this thing or die()" logic in your return lines.  It doesn't work as you'd expect:

function myfunc1() {
    return(
'thingy' or die('otherthingy'));
}
function
myfunc2() {
    return
'thingy' or die('otherthingy');
}
function
myfunc3() {
    return(
'thingy') or die('otherthingy');
}
function
myfunc4() {
    return
'thingy' or 'otherthingy';
}
function
myfunc5() {
   
$x = 'thingy' or 'otherthingy'; return $x;
}
echo
myfunc1(). "\n". myfunc2(). "\n". myfunc3(). "\n". myfunc4(). "\n". myfunc5(). "\n";
?>

Only myfunc5() returns 'thingy' - the rest return 1.

nick at itomic.com

19 years ago

Functions which return references, may return a NULL value. This is inconsistent with the fact that function parameters passed by reference can't be passed as NULL (or in fact anything which isnt a variable).

i.e.

function &testRet()
{
    return
NULL;
}

if (

testRet() === NULL)
{
    echo
"NULL";
}
?>

parses fine and echoes NULL

k-gun !! mail

5 years ago

With 7.1, these are possible yet;

function ret_void(): void {
   
// do something but no return any value
    // if needs to break fn exec for any reason simply write return;
   
if (...) {
        return;
// break
        // return null; // even this NO!
   
}$db->doSomething();
   
// no need return call anymore
}

function

ret_nullable() ?int {
    if (...) {
        return
123;
    } else {
        return
null; // MUST!
   
}
}
?>

Berniev

4 years ago

Be careful when introducing return types to your code.

Only one return type can be specified (but prefacing with ? allows null).

Return values of a type different to that specified are silently converted with sometimes perplexing results. These can be tedious to find and will need rewriting, along with calling code.

Declare strict types using "declare(strict_types=1);" and an error will be generated, saving much head-scratching.

ryan dot jentzsch at gmail dot com

7 years ago

PHP 7 return types if specified can not return a null.
For example:
declare(strict_types=1);

function

add2ints(int $x, int $y):int
{
   
$z = $x + $y;
    if (
$z===0)
    {
        return
null;
    }
    return
$z;
}
$a = add2ints(3, 4);
echo
is_null($a) ? 'Null' : $a;
$b = add2ints(-2, 2);
echo
is_null($b) ? 'Null' : $b;
exit();
Output:
7
Process finished with
exit code 139

zored dot box at gmail dot com

4 years ago

You may specify child return type if there is no parent:

class A {
    public function
f ($a)
    {
        return
1;
    }
}

class

B extends A {
    public function
f ($a): int // + return type, OK
   
{
        return
1;
    }
}

class

C extends A {
    public function
f (int $a) // + argument type, WARNING
   
{
        return
1;
    }
}
?>

Vidmantas Maskoliunas

6 years ago

Note: the function does not have "alternative syntax" as if/endif, while/endwhile, and colon (:) here is used to define returning type and not to mark where the block statement begins.

php(@)genjo(DOT)fr

2 years ago

Declaring a collection of objects as return type is not implemented and forbidden:
class Child{}

function

getChilds(): Child[]
{
    return [(new
Child()), (new Child())];
}
var_dump(getChilds());
// Returns:  Parse error: syntax error, unexpected '[', expecting '{'
?>

We have to use:
class Child{}

function

getChilds(): array
{
    return [(new
Child()), (new Child())];
}
var_dump(getChilds());
// Returns:
/*
array (size=2)
  0 =>
    object(Child)[168]
  1 =>
    object(Child)[398]
*/
?>

Idem for function parameter:
function setChilds(Child[] $childs){}
// Not allowedfunction setChilds(array $childs){}
// Allowed
?>

How can a function return a value in PHP?

A function can return a value using the return statement in conjunction with a value or object. return stops the execution of the function and sends the value back to the calling code. You can return more than one value from a function using return array(1,2,3,4).

How can we store return value in PHP variable?

You can't get a return value from that, but you can capture the contents by using the ob_functions: ob_start(); doStuff(); $output = ob_get_contents(); ob_end_clean(); Now $output contains the output of that function, rather than it having been printed.

Can you return a function in PHP?

Definition and Usage The return keyword ends a function and, optionally, uses the result of an expression as the return value of the function. If return is used outside of a function, it stops PHP code in the file from running.

How can I pass variable from one function to another in PHP?

You need to instantiate (create) $newVar outside of the function first. Then it will be view-able by your other function. You see, scope determines what objects can be seen other objects. If you create a variable within a function, it will only be usable from within that function.