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