2016-04-22 5 views
0

基本的にHTMLテーブルのデータである2つの配列があります。私はそれらを1つにマージしたい。配列の1つである$headersは、常に2番目の配列$dataよりも小さい数字になります。例えばキー値のペアに等しくない値を持つ2つの配列をマージする

:私は何をしたいことを何とかループは、これら2つの配列を介して行われ、これで終わるために、キーと値のペアを1にマージ

$headers = array("Name","Phone","E-Mail"); 
$data = array("Bob", "Phone1", "E-Mail1", "Mike", "Phone2", "Email2", "Jim", "Phone3", "E-Mail3"); 

$values[1][Name]  = "Bob"; 
$values[1][Phone]  = "Phone1"; 
$values[1][E-Mail]  = "E-Mail1"; 
$values[2][Name]  = "Mike"; 
$values[2][Phone]  = "Phone2"; 
$values[2][E-Mail]  = "E-Mail2"; 
$values[3][Name]  = "Jim"; 
$values[3][Phone]  = "Phone3"; 
$values[3][E-Mail]  = "E-Mail3"; 

を基本的には、それらを表の行でソートされた多次元配列に分割します。

今のところ、自分のデータを別々に保存することはできません。私の質問は、この新しい配列にそれを抽出する方法です。

+0

:私は、配列内のこれらの値を使用していた

が、私はこのように抽出された:私はまだ私はをループしたかったヘッダの配列を参照していたので、私はこのようにそれをやりました'array_combine'はarrayの中で等しい数の値を必要とします。私は今 'array_chunk'を見ています - あなたに戻ってきます... – KickingLettuce

+0

インデックスは実際には0ではなく1で始まりますか? –

+0

@ Don'tPanic no。打ち間違え。とにかくそれを削除しましたが、質問には必要ありません。 – KickingLettuce

答えて

0

これは私が唯一array_chunksを使用して、それを解決する方法です。

$values = array_chunk($data, count($headers)); 

これは、ヘッダー自体ではなく、ヘッダー配列のインデックスであることを除いて、ほとんど私が望むものを作り出しました。

foreach ($values[$key] as $key => $value) 
{ 
     $value; // the data 
     $headers[$key]; // the header (String, not index) 
} 
2

右のキーを設定するには、少し計算してください。

foreach ($data as $key => $value) { 
    $values[(int) $key/3][$headers[$key % 3]] = $value; 
} 
あなたは array_chunkarray_mapの組み合わせでそれを行うことができます
2

、およびarray_combine

$headers = array("Name","Phone","E-Mail"); 
$data = array("Bob", "Phone1", "E-Mail1", "Mike", "Phone2", "Email2", "Jim", "Phone3", "E-Mail3"); 

$result = array_map(function ($chunk) use ($headers) { 
    return array_combine($headers, $chunk); 
}, array_chunk($data, count($headers))); 

結果:

Array 
( 
    [0] => Array 
     ( 
      [Name] => Bob 
      [Phone] => Phone1 
      [E-Mail] => E-Mail1 
     ) 

    [1] => Array 
     ( 
      [Name] => Mike 
      [Phone] => Phone2 
      [E-Mail] => Email2 
     ) 

    [2] => Array 
     ( 
      [Name] => Jim 
      [Phone] => Phone3 
      [E-Mail] => E-Mail3 
     ) 

) 
関連する問題