PHP用不同的长度比较和填充阵列



我有两个不同长度的数组,其中包含mysql表的字段:

data1: Array
(
    [0] => Array
        (
            [field] => dggd
            [type] => int(11)
            [null] => NO
            [key] => 
            [default] => 
            [extra] => 
        )
    [1] => Array
        (
            [field] => id2
            [type] => varchar(255)
            [null] => NO
            [key] => PRI
            [default] => 
            [extra] => 
        )
    [2] => Array
        (
            [field] => qwee
            [type] => int(11)
            [null] => NO
            [key] => 
            [default] => 
            [extra] => 
        )
)
 data2: Array
(
    [0] => Array
        (
            [field] => id2
            [type] => int(11)
            [null] => NO
            [key] => PRI
            [default] => 
            [extra] => auto_increment
        )
)

基本上,我想填充具有较小值(带有空记录(的数组以匹配较大数组的长度。我也希望索引与['field']值匹配。

对于上层示例,我想要转换后的data2

data2: Array
(
    [0] => ''
    [1] => Array
        (
            [field] => id2
            [type] => int(11)
            [null] => NO
            [key] => PRI
            [default] => 
            [extra] => auto_increment
        )
    [2] => ''
)

我的代码会弄乱所有内容,尽管如果您想看,您可以在这里https://codeshare.io/ald0py

基于$data1中的'field'值创建一个具有空值的模板。

$template = array_fill_keys(array_column($data1, 'field'), '');

REINDEX $data2通过其'field'值并将其与模板合并。

$data2 = array_merge($template, array_column($data2, null, 'field'));

如果您不想要字符串键,请使用array_values转换回数字键。

$data2 = array_values($data2);

这种方法确实假定$data2中的所有'field'的值都存在于$data1中。如果它具有不同的'field'值,它们将合并到模板的末端,并且数组的长度不会相同。

最新更新