2

我无法理解数组,我想知道是否有人可以帮助我重新格式化 php.ini 中的现有数组。

这是现有的数组:

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
)
4

3 回答 3

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]);
}
于 2012-07-19T17:07:08.923 回答
2

好的,如果你的主数组被称为 $master。然后你会做这样的事情:

$newArr = array();
foreach ($master as $key => $subArray) {
    foreach ($subArray as $k2 => $value) {
        $newArr[$k2][$key] = $value;
    }
}
于 2012-07-19T17:11:58.913 回答
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>';
于 2012-07-19T17:14:16.327 回答