php 比较并填充不同长度的数组

php compare and fill arrays with different length

我有两个不同长度的数组,包含 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'), '');

通过其 'field' 值重新索引 $data2 并将其与模板合并。

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

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

$data2 = array_values($data2);

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