Нужна помощь в форматировании многомерного массива - PullRequest
3 голосов
/ 24 апреля 2019

У меня есть многомерный массив, в котором я хочу сгруппировать информацию о категориях категорий в один массив, а другие данные массива - в соответствующие массивы.

Я пытаюсь получить данные из базы данных с помощью некоторых 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.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Ниже приведен код о том, как я исправил свою проблему.

$ 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 я получаю значения, которые я хочу создать окончательный массив для выполнения группового массива.

0 голосов
/ 24 апреля 2019

поправьте меня, если я не прав. Вы хотите создать многомерный массив, который группируется по категориям. если это так, попробуйте этот код:

$newArray = [];
foreach ($arrs as $key => $value) {

   $newArray[$value['category_name']][] = $value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...