2011-06-24 4 views
0

アレイマッピングですか?assoc配列ベースのキー値をその共用体にマッピングしていますか?

私は

$A= array("A1"=>array("x"=>1,"b"=>2,"d"=>3,"s"=>8), 
      "A2"=>array("a"=>4,"b"=>3,"c"=>2,"d"=>1) 
     ); 

OUTPUT(HTML)している:

| a | b | c | d | x | s 
------------------------------ 
A1 | 0 | 2 | 0 | 3 | 1 | 8 
A2 | 4 | 3 | 2 | 1 | 0 | 0 

誰もがこれを行う方法を知っていますか?キーの上、

$keys = array_keys(
    array_reduce($A, function ($a, $b) { return $a + $b; }, array())); 
sort($keys); 

プリントヘッダ、および最終的にライン毎に、ラインを反復処理と:

+0

何を出したいですか? HTMLテーブル?他の何か。 – PeeHaa

+0

はい、htmlテーブル – newbie

答えて

1

$keys = array_unique(array_merge (array_keys($A['A1']), array_keys($A['A2']))); 

その後、出力を作成するキーを取得

echo " | "; 
echo implode(' | ', $keys) . "\n"; 

echo "\n"; 
foreach ($A as $name => $oneA) { 
    echo "$name "; 
    foreach ($keys as $key) echo "| ". (isset($oneA[$key]) ? $oneA[$key] : 0); 
    echo "\n"; 
} 

またはHTMLテーブルなど

<table> 
    <tr> 
    <td>&nbsp;</td> 
    <td><?php implode('</td><td>', $keys);</td> 
    </tr> 
    <?php foreach ($A as $name => $oneA) : ?> 
    <tr> 
    <td><?php echo $name; ?></td> 
    <?php foreach ($keys as $key): ?> 
     <td><?php echo isset($oneA[$key]) ? $oneA[$key] : 0; ?></td> 
    <?php endforeach; ?> 
    </tr> 
    <?php endforeach; ?> 
</table> 

あなたは前のキーをソートし、出力をフォーマットすることがあります。そのちょうど短い形。

+0

それはhtmlテーブルです。 – newbie

+0

Iveはそれを追加しましたが、通常は自分でhtml-tablesを作成できるはずです;)しかし、私は完全にエラーフリーであると約束していません;) – KingCrunch

0

まず、内側アレイ内のすべてのキーを収集

foreach ($A as $lineKey => $lineValue) { 
    //TODO: print $lineKey; 
    foreach ($keys as $k) { 
     //TODO: print $lineValue[$k]; or 0 
    } 
} 
+0

私はサポートされていないオペランドタイプを持っています.... – newbie

関連する問題