Compact()

Från Wiki.linux.se
Version från den 11 augusti 2024 kl. 05.07 av Admin (diskussion | bidrag)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

compact

(PHP 4, PHP 5, PHP 7, PHP 8)

compact — Skapa en array som innehåller variabler och deras värden

Beskrivning

compact(array|string $var_name, array|string ...$var_names): array Skapar en array som innehåller variabler och deras värden.

För var och en av dessa letar compact() efter en variabel med det namnet i den aktuella symboltabellen och lägger till den i utdataarrayen så att variabelnamnet blir nyckeln och innehållet i variabeln blir värdet för den nyckeln. Kort sagt, den gör motsatsen till extract().

Notera:

Före PHP 7.3 kommer strängar som inte är inställda att tyst ignoreras.

Parametrar

var_name
var_names
compact() tar ett varierande antal parametrar. Varje parameter kan vara antingen en sträng som innehåller namnet på variabeln, eller en array av variabelnamn. Arrayen kan innehålla andra arrayer av variabelnamn inuti den; compact() hanterar det rekursivt.

Returvärden

Returnerar utdataarrayen med alla tillagda variabler.

Fel/Undantag

compact() utfärdar ett E_WARNING-nivå fel om en given sträng refererar till en odefinierad variabel.

Ändringslogg

Version Beskrivning
8.0.0 Om en given sträng refererar till en odefinierad variabel, utfärdas nu ett E_WARNING-nivå fel.
7.3.0 compact() utfärdar nu ett E_NOTICE-nivå fel om en given sträng refererar till en odefinierad variabel. Tidigare har sådana strängar tyst ignorerats.

Exempel

Exempel #1 compact()-exempel

<?php
$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";

$location_vars = array("city", "state");

$result = compact("event", $location_vars);
print_r($result);
?>

Ovanstående exempel kommer att skriva ut:

Array
(
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
)

Noter

Notera: Gotcha Eftersom variabla variabler inte kan användas med PHP:s Superglobala arrayer inom funktioner, kan de Superglobala arrayerna inte passeras till compact().

Se även

extract()
Importerar variabler till den aktuella symboltabellen från en array

Exempel på användning av compact()

Följande exempel illustrerar olika sätt att använda compact()-funktionen i PHP.

Exempel #1 Grundläggande användning av Compact

<?php
$name = "John Doe";
$age = 30;
$location = "Stockholm";

$info = compact("name", "age", "location");
print_r($info);
?>

Ovanstående exempel kommer att skriva ut:

Array
(
    [name] => John Doe
    [age] => 30
    [location] => Stockholm
)

Exempel #2 Compact med array av variabelnamn

<?php
$firstName = "Anna";
$lastName = "Andersson";
$city = "Göteborg";

// Skapa en array med variabelnamn
$vars = array("firstName", "lastName", "city");

$result = compact($vars);
print_r($result);
?>

Detta exempel visar hur man skapar en array som innehåller flera variabler genom att ange en array av variabelnamn.

Exempel #3 Kombinera strängar och arrayer

<?php
$company = "My Company";
$industry = "Tech";
$country = "Sweden";
$employees = 100;

// Använd både strängar och arrayer i compact
$data = compact("company", array("industry", "country", "employees"));
print_r($data);
?>

Detta exempel kombinerar både direkta strängar och en array för att forma utdatan.

Exempel #4 Använda Compact för att förbereda data för funktioner

<?php
$user = "Alice";
$id = 25;

// Skapa en konfigurationsarray för en funktion
$config = compact("user", "id");

function setupUser($config) {
    echo "Setting up user: " . $config['user'] . " with ID: " . $config['id'];
}

setupUser($config);
?>

I detta exempel används `compact()` för att enkelt passa flera variabler till en funktion.

Exempel #5 Undvik att använda odefinierade variabler

<?php
$product = "Book";
$price = 19.99;

// Försök att använda en odefinierad variabel
$quantity = 10;

$cart = compact("product", "price", "quantity", "undefinedVar");
print_r($cart);
?>

Detta visar hur `compact()` hanterar försöket att inkludera en odefinierad variabel, vilket ger ett E_WARNING om PHP-versionen är 8.0.0 eller senare.