Skicka via referens

Från Wiki.linux.se
Version från den 24 augusti 2024 kl. 12.05 av Admin (diskussion | bidrag)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
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.