Как выбрать все значения массива по значениям другого массива

QuZ

Постоялец
Регистрация
18 Июл 2009
Сообщения
86
Реакции
50
Добрый день форумчане. Подскажите пожалуйста, как сделать следующее.
Имеется массив $row_1 c данными. Берется по циклу из mysql. Данный массив имеет вид -
Код:
[11] => 15 [Диаметр, см:] => 15 [12] => 30 [Высота, см:] => 30 [13] => 1 [Гарантия, год(а):] => 1 [14] => комнаты [Для интерьера:] => комнаты [15] => латунь,хрусталь [Используемый материал:] => латунь,хрусталь [16] => 1 [Количество ламп, шт:] => 1 [17] => 40 [Общая мощность, W:] => 40 [18] => Чехия [Страна:] => Чехия [19] => 40 [Max мощность ламп, W:] => 40 [20] => IVELE 7003 [Входит в состав коллекций:] => IVELE 7003 [21] => 2 [Освещаемая площадь, м² до:] => 2 [22] => 1 [Плафонов или рожков, шт:] => 1 [23] => E14 [Тип используемого цоколя:] => E14 [24] => золото черненное [Цвет:] => золото черненное [25] => [Цвет абажура:] => [26] => [Ширина, см:] => [27] => [Длина, см:] => [28] => [Напряжение питания, V:] => [29] => [Основной цвет:] => [30] => [Степень защиты по IP:] => [31] => [Цвет плафонов:] => [32] => [Аналог, W:] => [33] => [Мощность, W:] => [34] => [Количество светодиодов, шт:] => [35] => [Световой поток, люмен:] => [36] => [Тип диодов:] => [37] => [Цветовая температура, K (кельвин):] => [38] => [В стиле:] => [39] => [Тип светильника:] => [40] => [Лампы в копмлекте] => [41] => [iКрепление основанияКрепление:] => [42] => [Преобладающий цвет:] => [43] => [Цвет хрусталя:] => [44] => [Вес, кг:] => [45] => [Влажность, RH] => [46] => [Освещенность, люкс:] => [47] => [Дальность, м:] => [48] => [Рабочая температура:] => [49] => [Радиус действия, м:] => [50] => [Регулируемая высота, см:] => [51] => [Таймер, мин:] => [52] => [Угол, град:] => [53] => [Глубина, см:] => [54] => [Дополнительно:] => [55] => [Время работы:] => [56] => [Ресурс изделия, тыс. часов:] => [57] => [Вид лампы:] => [58] => [В комплекте] => [59] => [iТок нагрузкиТок, А:] => [60] => [Максимальный ток, А:] => [61] => [Сопротивление, Ом:] => [62] => [Габариты:] => [63] => [Тип лампы:] => [64] => [Форма:] => [65] => [Объем:] => [66] => [Дополнительный цвет:] => [67] => [Группа:] => [68] => [Свечение:] => [69] => [Пульт управления:] => [70] => [Светодиодная подсветка:] => [71] => [Подсветка:] => [72] => [Угол рассеивания] => [73] => [Количество светодиодов] => [74] => [Монтажное отверстие, см:] => [75] => [Высота внешней части] => [76] => [Исполнение:] => [77] => [Вх. напряжение, V:] => [78] => [Максимальная температура:] => [79] => [Класс Энергоэффективности] => [80] => [Размер диодов:] => [81] => [Старый артикул:] => [82] => [Вых. напряжение. V:] => [83] => [Ресурс:] => [84] => [Зажимы:] => [85] => [Сечение проводов, кв.мм:] => [86] => [Контактная группа:] => [87] => [Количество жил:] => [88] => [Площадь обогрева, м²:] => [89] => [Количество каналов:] => [90] => [Сечение, мм:] => )

Так-же имеется второй массив, который задается вне цикла, в котором в attribute_name - находятся все названия столбцов.
Код:
Array ( [0] => Array ( [attribute_name] => Диаметр, см: [attribute_id] => 1 ) [1] => Array ( [attribute_name] => Высота, см: [attribute_id] => 2 ) [2] => Array ( [attribute_name] => Гарантия, год(а): [attribute_id] => 3 ) [3] => Array ( [attribute_name] => Для интерьера: [attribute_id] => 4 ) [4] => Array ( [attribute_name] => Используемый материал: [attribute_id] => 5 ) [5] => Array ( [attribute_name] => Количество ламп, шт: [attribute_id] => 6 ) [6] => Array ( [attribute_name] => Общая мощность, W: [attribute_id] => 7 ) [7] => Array ( [attribute_name] => Страна: [attribute_id] => 8 ) [8] => Array ( [attribute_name] => Max мощность ламп, W: [attribute_id] => 9 ) [9] => Array ( [attribute_name] => Входит в состав коллекций: [attribute_id] => 10 ) [10] => Array ( [attribute_name] => Освещаемая площадь, м² до: [attribute_id] => 11 ) [11] => Array ( [attribute_name] => Плафонов или рожков, шт: [attribute_id] => 12 ) [12] => Array ( [attribute_name] => Тип используемого цоколя: [attribute_id] => 13 ) [13] => Array ( [attribute_name] => Цвет: [attribute_id] => 14 ) [14] => Array ( [attribute_name] => Цвет абажура: [attribute_id] => 15 ) [15] => Array ( [attribute_name] => Ширина, см: [attribute_id] => 16 ) [16] => Array ( [attribute_name] => Длина, см: [attribute_id] => 17 ) [17] => Array ( [attribute_name] => Напряжение питания, V: [attribute_id] => 18 ) [18] => Array ( [attribute_name] => Основной цвет: [attribute_id] => 19 ) [19] => Array ( [attribute_name] => Степень защиты по IP: [attribute_id] => 20 ) [20] => Array ( [attribute_name] => Цвет плафонов: [attribute_id] => 21 ) [21] => Array ( [attribute_name] => Аналог, W: [attribute_id] => 22 ) [22] => Array ( [attribute_name] => Мощность, W: [attribute_id] => 23 ) [23] => Array ( [attribute_name] => Количество светодиодов, шт: [attribute_id] => 24 ) [24] => Array ( [attribute_name] => Световой поток, люмен: [attribute_id] => 25 ) [25] => Array ( [attribute_name] => Тип диодов: [attribute_id] => 26 ) [26] => Array ( [attribute_name] => Цветовая температура, K (кельвин): [attribute_id] => 27 ) [27] => Array ( [attribute_name] => В стиле: [attribute_id] => 28 ) [28] => Array ( [attribute_name] => Тип светильника: [attribute_id] => 29 ) [29] => Array ( [attribute_name] => Лампы в копмлекте [attribute_id] => 30 ) [30] => Array ( [attribute_name] => iКрепление основанияКрепление: [attribute_id] => 31 ) [31] => Array ( [attribute_name] => Преобладающий цвет: [attribute_id] => 32 ) [32] => Array ( [attribute_name] => Цвет хрусталя: [attribute_id] => 33 ) [33] => Array ( [attribute_name] => Вес, кг: [attribute_id] => 34 ) [34] => Array ( [attribute_name] => Влажность, RH [attribute_id] => 35 ) [35] => Array ( [attribute_name] => Освещенность, люкс: [attribute_id] => 36 ) [36] => Array ( [attribute_name] => Дальность, м: [attribute_id] => 37 ) [37] => Array ( [attribute_name] => Рабочая температура: [attribute_id] => 38 ) [38] => Array ( [attribute_name] => Радиус действия, м: [attribute_id] => 39 ) [39] => Array ( [attribute_name] => Регулируемая высота, см: [attribute_id] => 40 ) [40] => Array ( [attribute_name] => Таймер, мин: [attribute_id] => 41 ) [41] => Array ( [attribute_name] => Угол, град: [attribute_id] => 42 ) [42] => Array ( [attribute_name] => Глубина, см: [attribute_id] => 43 ) [43] => Array ( [attribute_name] => Дополнительно: [attribute_id] => 44 ) [44] => Array ( [attribute_name] => Время работы: [attribute_id] => 45 ) [45] => Array ( [attribute_name] => Ресурс изделия, тыс. часов: [attribute_id] => 46 ) [46] => Array ( [attribute_name] => Вид лампы: [attribute_id] => 47 ) [47] => Array ( [attribute_name] => В комплекте [attribute_id] => 48 ) [48] => Array ( [attribute_name] => iТок нагрузкиТок, А: [attribute_id] => 49 ) [49] => Array ( [attribute_name] => Максимальный ток, А: [attribute_id] => 50 ) [50] => Array ( [attribute_name] => Сопротивление, Ом: [attribute_id] => 51 ) [51] => Array ( [attribute_name] => Габариты: [attribute_id] => 52 ) [52] => Array ( [attribute_name] => Тип лампы: [attribute_id] => 53 ) [53] => Array ( [attribute_name] => Форма: [attribute_id] => 54 ) [54] => Array ( [attribute_name] => Объем: [attribute_id] => 55 ) [55] => Array ( [attribute_name] => Дополнительный цвет: [attribute_id] => 56 ) [56] => Array ( [attribute_name] => Группа: [attribute_id] => 57 ) [57] => Array ( [attribute_name] => Свечение: [attribute_id] => 58 ) [58] => Array ( [attribute_name] => Пульт управления: [attribute_id] => 59 ) [59] => Array ( [attribute_name] => Светодиодная подсветка: [attribute_id] => 60 ) [60] => Array ( [attribute_name] => Подсветка: [attribute_id] => 61 ) [61] => Array ( [attribute_name] => Угол рассеивания [attribute_id] => 62 ) [62] => Array ( [attribute_name] => Количество светодиодов [attribute_id] => 63 ) [63] => Array ( [attribute_name] => Монтажное отверстие, см: [attribute_id] => 64 ) [64] => Array ( [attribute_name] => Высота внешней части [attribute_id] => 65 ) [65] => Array ( [attribute_name] => Исполнение: [attribute_id] => 66 ) [66] => Array ( [attribute_name] => Вх. напряжение, V: [attribute_id] => 67 ) [67] => Array ( [attribute_name] => Максимальная температура: [attribute_id] => 68 ) [68] => Array ( [attribute_name] => Класс Энергоэффективности [attribute_id] => 69 ) [69] => Array ( [attribute_name] => Размер диодов: [attribute_id] => 70 ) [70] => Array ( [attribute_name] => Старый артикул: [attribute_id] => 71 ) [71] => Array ( [attribute_name] => Вых. напряжение. V: [attribute_id] => 72 ) [72] => Array ( [attribute_name] => Ресурс: [attribute_id] => 73 ) [73] => Array ( [attribute_name] => Зажимы: [attribute_id] => 74 ) [74] => Array ( [attribute_name] => Сечение проводов, кв.мм: [attribute_id] => 75 ) [75] => Array ( [attribute_name] => Контактная группа: [attribute_id] => 76 ) [76] => Array ( [attribute_name] => Количество жил: [attribute_id] => 77 ) [77] => Array ( [attribute_name] => Площадь обогрева, м²: [attribute_id] => 78 ) [78] => Array ( [attribute_name] => Количество каналов: [attribute_id] => 79 ) [79] => Array ( [attribute_name] => Сечение, мм: [attribute_id] => 80 ) )

Суть задачи - мне необходимо получить массив, в котором, покажу на примере
Array ( [0] => Array ( [attribute_name] => Диаметр, см: [attribute_id] => 1 [Диаметр, см:] => 15) (для наглядности)
( [0] => Array ( [attribute_name] => Диаметр, см: [attribute_id] => 1 [attribute_value] => 15)
( [0] => Array ( [attribute_name] => Высота, см: [attribute_id] => 1 [attribute_value] => 30)
и т.д.
И так для каждого атрибута. Имеются пустые значения в $row_1..
Подскажите, как это реализовать. По идее - все просто, но я что-то подвис.

Т.е. в $row_1 содержатся значения, которые надо добавить в массив, а в $attribute_row - наименования ключей в [attribute_name]

Спасибо.
 
Последнее редактирование:
Ну по идее, надо идти циклом по второму массиву. И использовать значение attribute_name (т.е. "Диаметр, см:") как ключ для поиска в первом массиве.

PHP:
$row_1 = ['Диаметр, см:' => 15];

$attribute_row = [['attribute_name' => 'Диаметр, см:', 'attribute_id' => 1]];


foreach ($attribute_row as $subKey=>$subArray) {
  $searchKey = $subArray['attribute_name'];
  if (isset($row_1[ $searchKey])) {
    $attribute_row[$subKey][$searchKey] =  $row_1[ $searchKey];
  }
}


var_dump(   $attribute_row    );

Спасибо и спасибо за сохранение переменных) Подставил вместо своего кода и сразу завелась) Единственное, что - хотел бы, чтобы записывалось значение в attribute_value, а то, потом замучишься забирать элементы)
 
Ну по идее, надо идти циклом по второму массиву. И использовать значение attribute_name (т.е. "Диаметр, см:") как ключ для поиска в первом массиве.

PHP:
$row_1 = ['Диаметр, см:' => 15];

$attribute_row = [['attribute_name' => 'Диаметр, см:', 'attribute_id' => 1]];


foreach ($attribute_row as $subKey=>$subArray) {
  $searchKey = $subArray['attribute_name'];
  if (isset($row_1[ $searchKey])) {
    $attribute_row[$subKey][$searchKey] =  $row_1[ $searchKey];
  }
}


var_dump(   $attribute_row    );
<-------------- добавлено через 1979 сек. -------------->
Спасибо и спасибо за сохранение переменных) Подставил вместо своего кода и сразу завелась) Единственное, что - хотел бы, чтобы записывалось значение в attribute_value, а то, потом замучишься забирать элементы)
PHP:
$attribute_row[$subKey]['attribute_value'] =  $row_1[ $searchKey];
 
Назад
Сверху