2016-06-22 5 views
0

注:以下の配列は3種類の配列ではありません。それらは1変数の一部です:$ mainArray;値/キーを使用して3つの配列を1つに変換する

サンプルアレイ1(キー):

[0] => Apartments 
[1] => Apartments 
[2] => Apartments 
[3] => Houses 
[4] => Houses 
[5] => Houses 
[6] => Suites 
[7] => Suites 
[8] => Exclusive 
[9] => Exclusive 
[10] => SuperB 

サンプルアレイ2(値):

[0] => Apartment Value1 
[1] => Apartment Value2 
[2] => Apartment Value3 
[3] => Houses Value 1 
[4] => Houses Value 2 
[5] => Houses Value 3 
[6] => Suites Value 1 
[7] => Suites Value 2 
[8] => Exclusive Value 1 
[9] => Exclusive Value 2 
[10] => SuperB Value 1 

サンプルアレイ3(値):

[0] => Apartment Value1 
[1] => Apartment Value2 
[2] => Apartment Value3 
[3] => Houses Value 1 
[4] => Houses Value 2 
[5] => Houses Value 3 
[6] => Suites Value 1 
[7] => Suites Value 2 
[8] => Exclusive Value 1 
[9] => Exclusive Value 2 
[10] => SuperB Value 1 

マイ所望結果は

です
$array[$key] = array($array2,$array3); 

サンプル結果:

[Apartments] => array(rows 0-3 from Array #2, 0-3 from Array #3); 
[Houses] => array(rows 3-5 from Array #2, 3-5 from Array #3); 
[Exclusive] => array(rows 6-7 from Array #2, 6-7 from Array #3); 
[Suites] => array(rows 8-9 from Array #2, 8-9 from Array #3); 
[SuperB] => array(row 10 from Array #2, 10 from Array #3); 

。したがってキーを持つ二次元配列になっ。

この質問では、3つの配列が正確に同じ量の行を保持していると常に仮定します。違いは、最初の配列(キー)を変換して、他の2つの配列を次元配列として保持することです。

+1

最後の配列の表示方法を教えてください。おそらくこれを理解しやすくする –

+0

「サンプル結果」ブロックで質問を更新しました。 –

答えて

0

私はこれがあなたが望むものだと思います。私があなたにこれについてもっとお手伝いできるかどうか教えてください。

<?php 
    $mainArray = [ 
     ["Apartments","Apartments","Apartments","Houses","Houses","Houses","Suites","Suites","Exclusive","Exclusive","SuperB"], 
     ["Apartment Value1","Apartment Value2","Apartment Value3","Houses Value 1","Houses Value 2","Houses Value 3","Suites Value 1","Suites Value 2","Exclusive Value 1","Exclusive Value 2","SuperB Value 1"], 
     ["Apartment Value1","Apartment Value2","Apartment Value3","Houses Value 1","Houses Value 2","Houses Value 3","Suites Value 1","Suites Value 2","Exclusive Value 1","Exclusive Value 2","SuperB Value 1"] 
    ]; 

    if(count($mainArray[0]) != count($mainArray[1]) || count($mainArray[0]) != count($mainArray[2])) { 
     throw new Exception("Arrays are not the same size"); 
    } 

    $resultArray = []; 
    $count = count($mainArray[0]); 

    for($i = 0; $i < $count; $i++) { 
     if(!isset($resultArray[$mainArray[0][$i]])) { 
      $resultArray[$mainArray[0][$i]] = array($mainArray[1][$i], $mainArray[2][$i]); 
     } else { 
      $resultArray[$mainArray[0][$i]][] = $mainArray[1][$i]; 
      $resultArray[$mainArray[0][$i]][] = $mainArray[2][$i]; 
     } 
    } 

    echo "<pre>".print_r($resultArray, true)."</pre>"; 
+0

はい。私が必要とするように見えます。唯一のことは、すべての配列が1つの変数にあることです。彼らは分離されていません –

+0

私はコードを更新しました、それは期待どおりに動作するはずです:) – b0ne

+0

素晴らしい見えます!しかし、配列は3つの配列ではありません。$ mainArrayには3つの配列があります。 –

関連する問題