У меня есть многомерный массив, в котором я хочу сгруппировать информацию о категориях категорий в один массив, а другие данные массива в соответствующие массивы.
Я пытаюсь получить данные из базы данных с помощью некоторых запросов sql, а затем объединить все данные в один массив.
$out = array();
foreach ($arr as $key => $value){
//$out[] = (object)array_merge((array)$ar[$key], (array)$value);
$out[] = array_merge((array)$ar[$key], (array)$value);
}
$tmp = array();
foreach($out as $arg)
{
foreach($arg as $arg2 )
{
$tmp[$arg2['product_id']][] = @$arg2['category_id'];
}
}
echo "<pre>";
print_r($tmp);
Я хочу сгруппировать все категории, связанные с конкретным продуктом, в массив знаков, например идентификатор категории, имя категории, описание категории и т. д., а также данные о продукте в другой соответствующий массив.
Ниже приведен мой массив результатов, содержащий информацию о категории и данные о продукте.
Array
(
[0] => Array
(
[product_id] => 84
[category_id] => 1060
[category_name] => ACMITT
[category_descr] =>
010010
Syn: Aegerin
Skaper mot og styrke når retrett er umulig. Gir klart syn
og overblikk.
Et mineral som inneholder natrium og jern. Hardhet på 6,o
og egenvekt på 3,5
)
[1] => Array
(
[product_id] => 84
[category_id] => 1252
[category_name] => A
[category_descr] =>
)
[2] => Array
(
[product_attr_id] => 1827
[product_id] => 84
[attribute_id] => 13
[product_attr_value] =>
Skaper mot og styrke når retrett er umulig. Gir klart syn og
overblikk. Syn: Aegerin
)
[3] => Array
(
[product_attr_id] => 1819
[product_id] => 84
[attribute_id] => 4
[product_attr_value] => 010010
)
[4] => Array
(
[product_attr_id] => 1823
[product_id] => 84
[attribute_id] => 9
[product_attr_value] =>
http://www.steinhaugenmoss.no/avactis-
images/acmittkrysttynne.jpg
)
[5] => Array
(
[product_attr_id] => 1816
[product_id] => 84
[attribute_id] => 1
[product_attr_value] => 50.00
)
)
Array
(
[0] => Array
(
[product_id] => 5583
[category_id] => 1057
[category_name] => Gaveartikkler
[category_descr] =>
Mange av våre artikkler egner seg som gaver til jubilerer
og annet. Her har vi plasert steinklokker, telysholdere og
annet som egner seg som gaver.
)
[1] => Array
(
[product_id] => 5583
[category_id] => 1068
[category_name] => AGAT
[category_descr] =>
010030
Syn: Innvielsesstein
Gir deg selvrespekt mot og handlekraft. Hjelper for
hjertet.
Er mineralet kvarts og består av silicium oksyd. Har en
hardhet på 7.0 og egenvekt på 2.7 Det har felt seg ut
kryptokrystallinsk og danner knoller av mikro kvarts
krystaller. Fargen kommer av metaliske forurensinger. De
fleste agater i handel er farget.
)
[2] => Array
(
[product_attr_id] => 117306
[product_id] => 5583
[attribute_id] => 13
[product_attr_value] => Gir deg selvrespekt mot og
handlekraft. Hjelper for hjertet. Syn: innvielsesstein
)
[3] => Array
(
[product_attr_id] => 117302
[product_id] => 5583
[attribute_id] => 9
[product_attr_value] => Boksttte700.jpg
)
[4] => Array
(
[product_attr_id] => 117298
[product_id] => 5583
[attribute_id] => 4
[product_attr_value] => 010030
)
[5] => Array
(
[product_attr_id] => 117295
[product_id] => 5583
[attribute_id] => 1
[product_attr_value] => 700.00
)
)
Я хочу отформатировать этот массив, чтобы я мог создать CSV-файл этих данных для импорта в woocommerce.






поправьте меня если я ошибаюсь . вы хотите создать многомерный массив, который группируется по категориям. если это так, попробуйте этот код:
$newArray = [];
foreach ($arrs as $key => $value) {
$newArray[$value['category_name']][] = $value;
}
Я хочу сгруппировать массивы, содержащие только информацию о категории, т.е. проверьте этот массив, как показано ниже: - Массив ([0] => Массив ( [product_id] => 84 [category_id] => 1060 [category_name] => ACMITT [category_descr] => 010010 Syn: Aegerin Skaper mot og styrke når retrett er umulig Gir klart syn og overblikk.Et Mineral som inneholder natrium og jern Hardhet på 6,o og egenvekt på 3,5 ) [1] => Array ( [product_id ] => 84 [category_id] => 1252 [category_name] => A [category_descr] => )
Может ли кто-нибудь помочь мне решить эту проблему?
Могу ли я взглянуть на исходный массив?
Привет, Джонвел, я понял свою проблему и исправил ее сейчас.
Ниже приведен код о том, как я исправил свою проблему.
$final_arr = [];
foreach($out как $v) { $cat_name = array_column($v,'category_name');
$p_info = array_column($v,'product_attr_value');
$attrb_id = array_column($v,'attribute_id');
$p_id = array_column($v,'product_id');
$p_name = array_column($v,'product_name');
$c = array_combine($attrb_id, $p_info);
$final_arr[] = array(
'pid' => $p_id[0],
'product_title' => $p_name[0],
'product_name' => $p_name[0],
'product_desc' => $c[13],
'post_status' => 'publish',
'post_author' => 1,
'product_type' => 'simple',
'price' => $c[1],
'sku' => $c[4],
'image' => $c[9]
);
}
Я создаю массив и, используя функцию array_column, получаю значения, которые я хочу создать в конечном массиве для выполнения группового массива.
Привет Johnwel, Спасибо за вашу помощь, но это не может решить мою проблему. Вы можете видеть, что первые два массива с индексами [0] и [1] содержат информацию о категории, а другие массивы содержат информацию о продукте. Я хочу получить все названия категории определенного продукта, разделенные запятой или | и описание тоже будет отдельно. Кроме того, я хочу получить product_attr_value из других массивов, кроме массивов информации о категории. Надеюсь, теперь вы понимаете мою проблему. Спасибо