有关多维数组格式的帮助需求

3

我有一个多维数组,希望将类别信息归为一个数组,并将其他数组数据归为相应的数组。

我正在尝试通过一些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);

我希望将与特定产品相关的所有类别分组到一个数组中,例如类别ID、类别名称、类别描述等,并将产品数据存储到其他相应的数组中。
以下是我的结果数组,其中包含类别信息和产品数据。
 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

如果我理解错了,请纠正。您想创建一个按类别分组的多维数组。 如果是这种情况,请尝试使用以下代码:

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

   $newArray[$value['category_name']][] = $value;
}

嗨Johnwel,感谢您的帮助,但它无法解决我的问题。您可以看到,前两个带有索引[0]和[1]的数组中包含类别信息,其他数组包含产品相关信息。我想要获取特定产品的所有category_name,并用逗号或|分隔,描述也将是单独的。此外,我还想从除类别信息数组之外的其他数组中获取product_attr_value。希望您现在能理解我的问题。谢谢 - deadrockerrr
我想要将仅包含类别信息的数组进行分组,例如请查看以下数组:-数组 ( [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] => ) ) - deadrockerrr
有人能帮我解决这个问题吗? - deadrockerrr
我可以看一下初始数组吗? - Johnwel Pol
嗨,Johnwel,我找到了问题并已经解决了。 - deadrockerrr

0
以下是我解决问题的代码: $final_arr = [];
foreach($out as $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函数获取我想要创建最终数组的值,以执行分组数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接