php сравнивает и заполняет массивы разной длины

У меня есть два массива разной длины, содержащие поля таблиц 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

2

Решение

Создайте шаблон с пустыми значениями на основе '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' значения, они будут объединены в конце шаблона, и массивы не будут одинаковой длины.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]