2017-01-14 17 views
0
array:1 [▼ 
0 => array:4 [▼ 
    "firstName" => "val" 
    "email" => "someval" 
    "phone" => "someval" 
    "zip" => "someval" 
] 
] 

私は上記の配列を動的に作成しています。たとえばfirstNameの場合、電子メールフィールドは時々4つの要素、時には12の要素に変更されることがあります。キーとそれぞれの値にアクセスする方法が不明です。動的配列のキーと値にアクセスする方法

+0

:アレイと、あなたはキーから値のみ(存在する場合)にそれを減らしたいです'foreach($ the_arrayを$ key => $ value){...}'? –

+1

ジミーが示唆しているようにforeachを使って、またはあなたがその位置を知っているなら、$ firstname = $ myArray [0] ['firstName']; – jannej

+0

@JimmyAdaro。はい、私はそれを試しましたが、私は0として値を取得しています。私はそのトップレベルのインデックスキーと思います。 – user1965773

答えて

0

私は本当にダイナミックであるために仮定された配列の一部で作ることはできませんが、ここで私はあなたのケースかもしれないと思う何のためにいくつかの例です:

  1. は、キーの存在、例えば「電子メール」は動的である、あなたは含むサブアレイを見つけたいというキー

    $data = [ 
        [ 
         'name' => 'Baz', 
         'email' => '[email protected]', 
        ], 
        [ 
         'name' => 'Foo', 
        ], 
    ]; 
    
    $dataWithEmail = []; 
    foreach ($data as $item) { 
        if (array_key_exists('email', $item)) { 
         $dataWithEmail[] = $item; 
        } 
    } 
    var_dump($dataWithEmail); 
    
    // alternatively you can use: 
    
    $dataWithEmail = []; 
    $dataWithEmail = array_filter(
        $data, 
        function($item) { 
         return array_key_exists('email', $item); 
        } 
    ); 
    var_dump($dataWithEmail); 
    
  2. 配列の深さは動的であり、あなたはあなたが持っている「電子メール」

    $data = [ 
        [ 
         [ 
          [ 
           'name' => 'Bar', 
           'email' => '[email protected]', 
          ], 
         ], 
        ], 
        [ 
         [ 
          'name' => 'Foo', 
          'email' => '[email protected]', 
         ], 
        ], 
    ]; 
    
    $emails = []; 
    array_walk_recursive(
        $data, 
        function ($item, $key) use (&$emails) { 
         if ('email' === $key) { 
          $emails[] = $item; 
         } 
        } 
    ); 
    var_dump($emails); 
    
  3. を見つけたいですあなたがしようとしたことがあり

    $data = [ 
        [ 
         'name' => 'Baz', 
         'email' => '[email protected]', 
        ], 
        [ 
         'name' => 'Foo', 
        ], 
    ]; 
    
    $onlyEntriesWithNames = array_filter(
        $data, 
        function ($item) { 
         return array_key_exists('name', $item); 
        } 
    ); 
    $namesFromArray = array_reduce(
        $onlyEntriesWithNames, 
        function($carry, $item) { 
         $carry[] = $item['name']; 
    
         return $carry; 
        }, 
        [] 
    ); 
    var_dump($namesFromArray); 
    
関連する問題