PHP:从多个数组获取唯一的数组键或列

时间:2019-05-14 03:56:37

标签: php arrays

美好的一天,

我想获取数组内部每个数组的唯一列。

我的目标是根据数组数据动态绘制列。

示例:

$arr = array(
        array('name' => 'Juan Dela Cruz', 'birthday' => '1988-07-11'),
        array('name' => 'Will Smith', 'birthday' => '1996-02-22', 'age' => '23'),
        array('name' => 'John Smith', 'birthday' => '1992-03-21', 'age' => '26', 'gender' => '<'),
    );

因此列输出必须为; 姓名,生日,年龄,性别。

表输出必须是这样的。

enter image description here

我尝试了array_keys,但无法正常工作。

array_keys($arr)

请帮助大家。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在完全合并的数组上使用array_keys来获取所有键,然后使用这些键形成一个空表行,然后将数组的每一行与该行合并以进行输出:

$arr = array(
        array('name' => 'Juan Dela Cruz', 'birthday' => '1988-07-11'),
        array('name' => 'Will Smith', 'birthday' => '1996-02-22', 'age' => '23'),
        array('name' => 'John Smith', 'birthday' => '1992-03-21', 'age' => '26', 'gender' => 'M'),
    );
$keys = array_keys(array_merge(...$arr));
// header
echo '<table><thead><tr><th>' . implode('</th><th>', $keys) . '</th></tr></thead><tbody>';
// body
// make an empty row
$empty = array_combine($keys, array_fill(0, count($keys), ''));
foreach ($arr as $a) {
    echo '<tr><td>' . implode('</td><td>', array_merge($empty, $a)) . '</td></tr>';
}
echo '</tbody></table>';

输出:

<table>
<thead>
<tr><th>name</th><th>birthday</th><th>age</th><th>gender</th></tr>
</thead>
<tbody>
<tr><td>Juan Dela Cruz</td><td>1988-07-11</td><td></td><td></td></tr>
<tr><td>Will Smith</td><td>1996-02-22</td><td>23</td><td></td></tr>
<tr><td>John Smith</td><td>1992-03-21</td><td>26</td><td>M</td></tr>
</tbody>
</table>

Demo on 3v4l.org