2016-05-17 6 views
2

Ich überprüfte mehrere ähnliche Fragen wie this, this und this aber bleiben nicht klar, dass, kann ich einen festen Wert durch Operationen in einem tiefen verschachtelten Array, anstatt Funktion aufrufen oder eine Variable zuweisen?Funktion Ergebnis als Array-Wert

$s = true; //or false; 
$arr = [ 
    'key1'=>'val1', 
    'key2'=>'val2', 
    'row'=>[ 
    function($s){ 
     if($s) return array('x'=>'y',...); 
     else return null; 
    }, 
    [ 
     'row2a'=>'val2a', 
     'row2b'=>'val2b', 
    ], 
    [ 
     'row3a'=>'val3a', 
     'row3b'=>'val3b', 
    ], 
    ], 
]; 

// Output: 
Array(
    ... 
    [row] => Array 
    (
     [0] => Closure Object 
      (
       [parameter] => Array 
        (
         [$s] => 
        ) 
      ) 
     [1] => Array 
      (
       [row2a] => val2a 
       [row2b] => val2b 
      )  
    ... 

Closure Object erhielt array('x'=>'y',...) in $arr['row'][0] nicht:

Als Beispiel unten an der ersten Position der in Abhängigkeit von $arr['row']$s einzufügen. Oder es gibt keine Möglichkeit, Werte durch Operationen innerhalb eines Arrays zu erhalten, sondern Funktionen aufzurufen oder Variablen zu übergeben. Vielen Dank.

+0

Ich bin nicht sicher, warum können Sie nicht einfach diese ausführen Funktion außerhalb der Array-Erstellung und nur das Ergebnis dort, wo Sie es brauchen? Gibt es einen bestimmten Grund, warum Sie solch ein Konstrukt haben wollen? –

+0

Es war in einer Funktion und ich habe einige Orte wie diese, bedeutet, dass ich mehr Funktionen außerhalb nur ein paar Code erstellen müssen, um die Werte zu erhalten. – James

Antwort

1

Wenn das, was Sie brauchen Sie immer versuchen, diesen Ansatz können:

$s = 1; 
$value = call_user_func(function($s) { return $s; }, $s); 

var_dump($value); 

Und es wird produzieren:

int(1) 
+0

Es funktioniert. Ich danke dir sehr. – James

0
Try below code 
$s=true; 

function abc($flag) { 
    if ($flag): 
     $array["x"]="x"; 
     $array["y"]="y"; 
     return $array; 
    else: 
     return null; 
    endif; 
} 
$arr = [ 
    'key1' => 'val1', 
    'key2' => 'val2', 
    'row' => [ 
     $resultset = abc($s), 
     [ 
      'row2a' => 'val2a', 
      'row2b' => 'val2b', 
     ], 
     [ 
      'row3a' => 'val3a', 
      'row3b' => 'val3b', 
     ], 
    ], 
]; 
print_r($arr); 
exit; 
output 
Array 
(
    [key1] => val1 
    [key2] => val2 
    [row] => Array 
     (
      [0] => Array 
       (
        [x] => x 
        [y] => y 
       ) 

      [1] => Array 
       (
        [row2a] => val2a 
        [row2b] => val2b 
       ) 

      [2] => Array 
       (
        [row3a] => val3a 
        [row3b] => val3b 
       ) 
     ) 
) 
Verwandte Themen