2016-07-18 11 views
0

これは数回お願いしますが、高度な問題があります。サブ配列としてデータを1つの配列にプッシュ

私はそれが配列のキーとarray_pushを実行することはできません知っているときforeach

$data[0] => [ 
    'value1' => string(x) "some data", 
    'value2' => string(x) "some other data" 
]; 

$data[1] => ... ... 

私は配列$dataを持って、私はこのような構造を持ってする必要がありますが、コード怒鳴るを試みたが、私は2つの大きな配列を得ました。私はほんの少しのサブアレイ

$authors = array(); 
#... 
foreach($docs->email as $email){ 
    array_push($authors, array('email'=>$email,'name'=>$articleAuthors[$i])); 
    ++$i; 
} 
#... 
+0

あなたの2つのarray_pushの代わりに、$ authors [$ i] = array( 'email' => $ email、 'name' => $ articleAuthors [$ i]); 'ループの前に空の配列を初期化することを忘れないでください) – Julqas

+0

なぜ '[email protected]' - > 'name'などのさまざまなメタデータを含むオブジェクトからの直接マップを持てませんか? – activatedgeek

答えて

2

と一つの大きな配列を必要とし、上記のコードはあります2つの大きな配列を作成し、行を追加しました。

$authors['email'] = array(); 
$authors['name'] = array(); 
foreach (json_decode($response)->response->docs AS $docs) 
{ 
    $articleAuthors = explode(', ', $docs->authors); 
    $i=0; 
    foreach ($docs->email as $email) { 
     array_push($authors['email'], $email); 
     array_push($authors['name'], $articleAuthors[$i]); 
     ++$i; 
    } 
} 

$ data = array_combine($ authors ['name']、$ authors ['email']);

+0

ありがとう、はい、これは仕事を行う。これは、より大きなデータをサブアレイに入れるためのソリューションです。乾杯。 –

0

私は解決策を見つけると1つの配列を取得し、これを試してみてください小さなサブアレイ

マイコード

$authors['email'] = array(); 
    $authors['name'] = array(); 
    foreach (json_decode($response)->response->docs AS $docs) 
    { 
     $articleAuthors = explode(', ', $docs->authors); 
     $i=0; 
     foreach ($docs->email as $email) { 
      array_push($authors['email'], $email); 
      array_push($authors['name'], $articleAuthors[$i]); 
      ++$i; 
     } 
    } 
+1

大きな配列を2つの異なる配列にプッシュする代わりに、直接直接構築する方がよいでしょう。 – Julqas

関連する問題