我有两个不同长度的数组,其中包含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'
值,它们将合并到模板的末端,并且数组的长度不会相同。