在php中破坏数组并创建新数组

在php中破坏数组并创建新数组,php,arrays,Php,Arrays,我有以下数组$data Array ( [0] => Array ( [sku] => 049-1090 [color] => Beige,Brown [Finish] => Distressed,Handscraped,Matt [Grade] => B (Select/Advantage) [Installation

我有以下数组
$data

 Array
(
    [0] => Array
        (
            [sku] => 049-1090
            [color] => Beige,Brown
            [Finish] => Distressed,Handscraped,Matt
            [Grade] => B (Select/Advantage)
            [Installation Location] => Second Floor,Main Floor
            [Installation Method] => Nail Down
            [Specie] => Maple
            [Warranty] => 25 Years
            [Width] => 5 inch
        )

    [1] => Array
        (
            [sku] => 107-1079
            [color] => Brown,Yellow
            [Edge] => Square Edge
            [Finish] => Matt
            [Grade] => B (Select/Advantage)
            [Installation Location] => Second Floor,Main Floor
            [Installation Method] => Glue Down,Nail Down
            [Specie] => Maple
            [Warranty] => 25 Years
            [Width] => 3 5/8 inch
        )
    )
现在我想创建一个数组
$final\u array
,它只包含2个键。第一个键是
sku
,第二个键是
feature
<代码>功能键将由除
sku
以外的所有键的值组成,分解
处的值,因此最终数组将如下所示:

    (
    [sku]=>049-1090
    [feature]=>color:Beige
)
 (
    [sku]=>049-1090
    [feature]=>color:Brown
)
(
    [sku]=>049-1090
    [feature]=>Finish:Distressed
)
(
    [sku]=>049-1090
    [feature]=>Finish:Handscraped
)
(
    [sku]=>049-1090
    [feature]=>Finish:Matt
)
第二个
sku

我试过这样做:

$final_array = array();
foreach($data as $value){

   foreach($value as $innerkey=>$innervalue){

            $final_array[] = ['sku'=>$innerkey,'feature'=>$innervalue];

   }

}


echo "<pre>";
print_r($final_array);
echo "</pre>";
$final_array=array();
foreach(数据为$value){
foreach($innerkey=>$innervalue的值){
$final_数组[]=['sku'=>$innerkey,'feature'=>$innervalue];
}
}
回声“;
打印(最终数组);
回声“;
试试这个:

$final_array = [];
foreach ($data as $row) {
    $sku = $row['sku'];
    unset($row['sku']);
    foreach ($row as $featureName => $featureValues) {
        foreach (explode(',', $featureValues) as $featureValue) {
            $final_array[] = [
                'sku' => $sku,
                'feature' => "{$featureName}:{$featureValue}"
            ];
        }
    }
}
var_export($final_array);
$final_array=array();
foreach(数据为$value){
$sku=$value['sku'];
foreach($innerkey=>$innervalue的值){
如果($innerkey!=“sku”){
$subvalues=分解(“,”,$innervalue);
foreach($subvalue为$subvalue){
$final_数组[]=['sku'=>$sku,'feature'=>$innerkey.:'.$subvalue];
}
}
}
}
回声“;
打印(最终数组);
回声“;

通过对我对您上一个问题的回答进行一些小的编辑,可以在没有迭代条件的情况下完成此任务

临时缓存sku,然后将其从数据行中删除,这样您可以快速分解和迭代所有剩余数据

代码:()


嗨,谢谢,部分正确。但我还需要将逗号分隔的值分解为数组。例如,
[color]=>米色、棕色将有2个元素
$final_array = [];
foreach ($data as $row) {
    $sku = $row['sku'];
    unset($row['sku']);
    foreach ($row as $featureName => $featureValues) {
        foreach (explode(',', $featureValues) as $featureValue) {
            $final_array[] = [
                'sku' => $sku,
                'feature' => "{$featureName}:{$featureValue}"
            ];
        }
    }
}
var_export($final_array);