我需要从这个数组重新排列:
Array
(
[0] => Array
(
[0] => Qty
[1] => 1
[2] => 3
)
[1] => Array
(
[0] => Item No
[1] => ABC345
[2] => FGR8765
)
[2] => Array
(
[0] => Description
[1] => Lores ipsum
[2] => Dolores sit amet
[3] => quasi architecto beatae:
[4] => sed quia consequuntur
[5] => consectetur, adipisci velit
)
[3] => Array
(
[0] => Price
[1] => $10
[2] => $20
)
变得像这样:
Array
(
[0] => array(
'Qty' => 1,
'Item No' => 'ABC345',
'Description' => 'Lores ipsum',
'Price' => $10
)
[1] => array(
'Qty' => 3,
'Item No' => 'FGR8765',
'Description' => 'Dolores sit amet quasi architecto beatae sed quia consequuntur consectetur, adipisci velit',
'Price' => $20
)
)
每个数组的0索引的是键的名称:数量,项目编号,描述,价格。 如果索引大于第一个数组的个数,则合并该值,如描述键所示,将数组3,4,5的值合并为数组2。
到目前为止,这是我的尝试:
$itemList = array();
foreach($result as $i => $valueKey)
{
if($i == 0) {
$max = count($valueKey);
}
foreach($valueKey as $y => $item)
{
$itemList[] = array(
$item[0] => $item
);
}
}
答案 0 :(得分:0)
$input = array(/* input array */);
$output = array(/* output array */);
foreach ($input as $property)
{
$propcount = count($property);
for ($i = 1; $i < $propcount; $i++)
$output[$i - 1][$property[0]] = $property[$i];
}
答案 1 :(得分:0)
您可以这样做:
$input = [
[ "Qty", 1, 3 ],
[ "Item No", "ABC345", "FGR8765" ],
[ "Description", "Lores ipsum", "Dolores sit amet", "quasi architecto beatae:", "sed quia consequuntur", "consectetur, adipisci velit" ],
[ "Price", "$10", "$20" ]
];
$max = count($input[0]) - 1;
$output = array_reduce(
$input,
function (array $out, array $items) use ($max) {
$header = array_shift($items);
$redundant = array_splice($items, $max);
foreach ($items as $idx => $value) {
$out[$idx][$header] = $value;
}
foreach ($redundant as $value) {
$out[$idx][$header] .= ' ' . $value;
}
return $out;
},
[]
);
var_dump($output);
我也建议将它放在一个函数中,并使用一个好名字。
答案 2 :(得分:0)
您好,我想这会对您有所帮助:)
$result = Array
(
Array
(
"Qty", 1, 3
),
Array
(
"Item No", "ABC345", "FGR8765"
),
Array
(
"Description", "Lores ipsum", "Dolores sit amet", "quasi architecto beatae:", "sed quia consequuntur", "consectetur, adipisci velit"
),
Array
(
"Price", "$10", "$20"
)
);
$total_result = count($result);
$itemList = $final_result = array();
$i = 1;
foreach ($result as $res) {
foreach ($result as $item) {
if (isset($item[0])) {
foreach ($item as $key => $val) {
$itemList[$item[0]] = ($item[$i]=="")?0:$item[$i];
}
}
}
$i++;
$final_result[] = $itemList;
}
echo '<pre>';
print_r($final_result);