我无法理解数组,我想知道是否有人可以帮我重新格式化php中的现有数组。
这是现有的数组:
Array
(
[item] => Array
(
[0] => item listing 1
[1] => item listing 2
)
[description] => Array
(
[0] => item testing description
[1] => item testing description
)
[rate] => Array
(
[0] => 1.00
[1] => 2.00
)
[itemid] => Array
(
[0] => 1
[1] => 2
)
)
我希望它看起来像这样:
Array
(
[0] => Array
(
[item] => item listing 1
[description] => item testing description
[rate] => 1.00
[itemid] => 1
)
[1] => Array
(
[item] => item listing 2
[description] => item testing description
[rate] => 2.00
[itemid] => 2
)
答案 0 :(得分:3)
如果第一个子阵列中所有子阵列的长度相同,则应该有效。
假设上面的第一个数组是变量$inArray
;新数组是$outArray
。
$outArray = array();
$iLength = count($inArray['item']);
for($i=0; $i<$iLength; $i++) {
$outArray[] = array(
'item' => $inArray['item'][$i],
'description' => $inArray['description'][$i],
'rate' => $inArray['rate'][$i],
'itemid' => $inArray['itemid'][$i]);
}
答案 1 :(得分:2)
好的,如果您的主数组被称为$ master。然后你会做这样的事情:
$newArr = array();
foreach ($master as $key => $subArray) {
foreach ($subArray as $k2 => $value) {
$newArr[$k2][$key] = $value;
}
}
答案 2 :(得分:0)
为您的特定用例工作(复制/粘贴在空白的php上):
$master = array(
'itemid' => array(1, 2),
'items' => array('item listing 1', 'item listing 2'),
'description' => array('item testing description', 'item testing description'),
'rate' => array(1.10, 2.10)
);
$newItems = array();
foreach($master['itemid'] as $index => $id) {
$newItem = array(
'itemid' => $id,
'item' => $master['items'][$index],
'description' => $master['description'][$index],
'rate' => $master['rate'][$index],
);
$newItems[] = $newItem;
}
echo '<pre>';
print_r($newItems);
echo '</pre>';