2016-05-17 20 views
2

ように私はthisthis、およびthisのようないくつかの類似した質問にチェックしますが、私はむしろ、関数を呼び出しまたは変数を割り当てるよりも、深くネストされた配列内の操作によって企業価値を得ることができる、ということは明らかでないまま? $sに応じ$arr['row']の第1の位置に挿入するには、以下の例として関数の結果は、配列値

$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 
      )  
    ... 

$arr['row'][0]Closure Objectないarray('x'=>'y',...)を得ました。または、配列内の操作で値を取得する方法はありませんが、関数を呼び出すか、変数を渡しますか?ありがとう。

+0

私は、なぜあなたは、単にこれを実行することができないことを確認していません関数を配列作成の外に置いて、結果を必要な場所に置くだけですか?あなたはそのような構造を持ちたいと思う特別な理由はありますか? –

+0

これは関数であり、このような場所がいくつかあるので、値を取得するためにほんの数のコードの外にもっと多くの関数を作成する必要があることを意味します。 – James

答えて

1

これはあなたが常にこの方法を試すことができます必要なものである場合:

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

var_dump($value); 

そして、それは生成されます:

int(1) 
+0

これは機能します。どうもありがとうございます。 – 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 
       ) 
     ) 
) 
関連する問題