2011-06-24 58 views
0

數組映射?基於union的映射關聯數組中的鍵值?

我已經

$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 

任何人都知道如何做到這一點?

+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

我添加了它,但通常你應該能夠自己創建html-tables;)但是,我不承諾它完全沒有錯誤;) – KingCrunch

0

首先,收集在內部的陣列的所有鍵:

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

的打印頭,最後迭代線,並且對於每行,在所述的鍵:

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

我得到了不支持的操作數類型.... – newbie