Skicka via referens

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Passera med referens

Du kan skicka en variabel med referens till en funktion så att funktionen kan modifiera variabeln. Syntaxen är som följer:

<?php
function foo(&$var)
{
    $var++;
}

$a = 5;
foo($a);
// $a är 6 här
?>

Notera: Det finns inget referenstecken vid funktionsanropet – endast vid funktionsdefinitioner. Funktionsdefinitionerna ensamma är tillräckliga för att korrekt skicka argumentet med referens.

Följande saker kan skickas med referens:

  • Variabler, dvs. `foo($a)`
  • Referenser som returneras från funktioner, dvs.:
<?php
function foo(&$var)
{
    $var++;
}

function &bar()
{
    $a = 5;
    return $a;
}

foo(bar());
?>

Läs mer om att returnera med referens.

Inga andra uttryck bör skickas med referens, eftersom resultatet är odefinierat. Till exempel är följande exempel på att skicka med referens ogiltiga:

<?php
function foo(&$var)
{
    $var++;
}

function bar() // Notera att & saknas
{
    $a = 5;
    return $a;
}

foo(bar()); // Ger en varning

foo($a = 5); // Uttryck, inte variabel
foo(5); // Ger ett fatalt fel

class Foobar
{
}

foo(new Foobar()); // Ger en varning från och med PHP 7.0.7
                   // Varning: Endast variabler bör skickas med referens
?>


Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.references.pass.php
PHP
Språkreferens
Språkreferens#Referenser Förklarade


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.