在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);