我有两个长度不同的数组,包含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
)
)
基本上我想填充具有较少值(具有空记录)的数组以匹配较大数组的长度。此外,我希望索引与['字段']值匹配。
对于上面的示例,我希望转换后的data2
如下:
data2: Array
(
[0] => ''
[1] => Array
(
[field] => id2
[type] => int(11)
[null] => NO
[key] => PRI
[default] =>
[extra] => auto_increment
)
[2] => ''
)
我的代码搞砸了所有内容,但是如果你想看到它,请转到https://codeshare.io/ald0pY
答案 0 :(得分:1)
根据'field'
中的$data1
值创建一个包含空值的模板。
$template = array_fill_keys(array_column($data1, 'field'), '');
按其$data2
值重新索引'field'
,并将其与模板合并。
$data2 = array_merge($template, array_column($data2, null, 'field'));
如果您不想要字符串键,请使用array_values
将其转换回数字键。
$data2 = array_values($data2);
此方法确实假设'field'
中$data2
中的$data1
的所有值都存在于'field'
中。如果它有任何不同的HashMap
值,它们将合并到模板的末尾,并且数组的长度不会相同。