56 Stimmen

Standard-Array-Werte, wenn der Schlüssel nicht existiert?

Wenn ich ein Array voller Informationen habe, gibt es eine Möglichkeit, wie ich einen Standardwert zurückgeben kann, wenn der Schlüssel nicht existiert?

function items() {
    return array(
        'one' => array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         ),
         'two' => array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         ),
         'three' => array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         ),
    );
}

Und in meinem Code

$items = items();
echo $items['one']['a']; // 1

Aber kann ich einen Standardwert haben, der zurückgegeben wird, wenn ich einen Schlüssel eingebe, der nicht existiert, wie,

$items = items();
echo $items['four']['a']; // DOESN'T EXIST RETURN DEFAULT OF 99

3voto

knittl Punkte 214432

Nicht dass ich wüsste.

Das müssen Sie gesondert mit isset

echo isset($items['four']['a']) ? $items['four']['a'] : 99;

2voto

rostamiani Punkte 2153

Verwenden Sie die Funktion Array_Fill()

http://php.net/manual/en/function.array-fill.php

$default = array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         );
$arr = Array_Fill(1,3,$default);
print_r($arr);

Das ist das Ergebnis:

Array
(
    [1] => Array
        (
            [a] => 1
            [b] => 2
            [c] => 3
            [d] => 4
        )

    [2] => Array
        (
            [a] => 1
            [b] => 2
            [c] => 3
            [d] => 4
        )

    [3] => Array
        (
            [a] => 1
            [b] => 2
            [c] => 3
            [d] => 4
        )

)

0voto

Ynhockey Punkte 3689

Ich kenne keine Möglichkeit, dies mit dem von Ihnen angegebenen Code genau zu tun, aber Sie könnten es mit einer Funktion umgehen, die eine beliebige Anzahl von Argumenten akzeptiert und den gesuchten Parameter oder den Standardwert zurückgibt.

Verwendung:

echo arr_value($items, 'four', 'a');

o:

echo arr_value($items, 'four', 'a', '1', '5');

Funktion:

function arr_value($arr, $dimension1, $dimension2, ...)
{
    $default_value = 99;
    if (func_num_args() > 1)
    {
        $output = $arr;
        $args = func_gets_args();
        for($i = 1; $i < func_num_args(); $i++)
        {
            $outout = isset($output[$args[$i]]) ? $output[$args[$i]] : $default_value;
        }
    }
    else
    {
        return $default_value;
    }

    return $output;
}

0voto

Ihor Burlachenko Punkte 4163

Sie können verwenden DefaultArray de Nicht-Standard-PHP-Bibliothek . Sie können ein neues DefaultArray aus Ihren Elementen erstellen:

use function \nspl\ds\defaultarray;
$items = defaultarray(function() { return defaultarray(99); }, $items);

Oder geben Sie DefaultArray aus der items() Funktion:

function items() {
    return defaultarray(function() { return defaultarray(99); }, array(
        'one' => array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         ),
         'two' => array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         ),
         'three' => array(
              'a' => 1,
              'b' => 2,
              'c' => 3,
              'd' => 4,
         ),
    ));
}

Beachten Sie, dass wir ein verschachteltes Standard-Array mit einer anonymen Funktion erstellen function() { return defaultarray(99); } . Andernfalls wird dieselbe Instanz des Standard-Array-Objekts für alle übergeordneten Array-Felder verwendet.

0voto

Bishal Udash Punkte 62

Derzeitige Verwendung von php 7.2

>>> $a = ["cat_name"=>"Beverage", "details"=>"coca cola"];
=> [
     "cat_name" => "Beverage",
     "details" => "coca cola",
   ]
>>> $a['price']
PHP Notice:  Undefined index: price in Psy Shell code on line 1
=> null
>>> $a['price'] ?? null ? "It has price key" : "It does not have price key"
=> "It does not have price key"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X