У меня есть два массива разной длины, содержащие поля таблиц 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
Создайте шаблон с пустыми значениями на основе 'field'
значения в $data1
,
$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);
Этот подход предполагает, что все значения 'field'
в $data2
присутствуют в $data1
, Если это имеет какое-то другое 'field'
значения, они будут объединены в конце шаблона, и массивы не будут одинаковой длины.
Других решений пока нет …