0

我有一个包含以下值的数组。

array(
'dates' => array(
    (int) 0 => '2013-04-22',
    (int) 1 => '2013-04-23',
),
'publisherName' => array(
    (int) 0 => 'Comp1',
    (int) 1 => 'Comp2',
),
'loaded' => array(
    (int) 0 => (int) 2189,
    (int) 1 => (int) 37,
),
'clicks' => array(
    (int) 0 => (int) 0,
    (int) 1 => (int) 0,
),
'ctr' => array(
    (int) 0 => (int) 0,
    (int) 1 => (int) 0,
)
)

我想要制作的是在不同日期获取基于公司的数据,如下面的数组。

我怎样才能创建一个像这样的数组;

array (
    '2013-04-22'=>array(
        'publisherName'=>'Comp1',
        'loaded'=>2189,
        'clicks'=>0,
        'ctr'=>0),
    '2013-04-23'=>array(
        'publisherName'=>'Comp2',
        'loaded'=>37,
        'clicks'=>0,
        'ctr'=>0)
    ...
)

其中包含每日统计信息,但来自publishername现场。

有任何想法吗?

4

5 回答 5

1

这是一个不依赖任何键的示例,唯一的要求是date原始数组中的第一个数组:

// $array is your original array
$dates = array_shift($array);

$output = array();
foreach ($array as $k => $a) {
  foreach ($a as $i => $v) {
    $output[$i][$k] = $v;
  }
} 
$output = array_combine($dates, $output);
于 2013-05-22T12:18:00.287 回答
1

设初始数组为$a,所需数组为$b;代码:

$b = array();
$count = 0;
foreach($a['dates'] as $date) {
    $b[$date] = array(
        'name' => $a['publisherName'][$count],
        'loaded'=> $a['loaded'][$count],
        'clicks'=> $a['clicks'][$count],
        'ctr'=> $a['ctr'][$count]
    );
    $count++;
}

结果:

Array
(
    [2013-04-22] => Array
        (
            [name] => Comp1
            [loaded] => 2189
            [clicks] => 0
            [ctr] => 0
        )

    [2013-04-23] => Array
        (
            [name] => Comp2
            [loaded] => 37
            [clicks] => 0
            [ctr] => 0
        )

)
于 2013-05-22T12:06:47.540 回答
0
<?php 
$data = $yourarray;
$new = array();
foreach($data['dates'] as $key=>$value) {
    $new[$value] = array('name'=>$data['publisherName'][$key],'loaded'=>$data['loaded'][$key],'clicks'=>$data['clicks'][$key],'ctr'=>$data['ctr'][$key]);
}
echo '<pre>';
print_r($new);
?>
于 2013-05-22T12:07:53.377 回答
0
$newArr = array();
foreach($data['dates'] as $key=>$value) {
    $new[$value] = array('name'=>$data['publisherName'][$key],'loaded'=>$data['loaded'][$key],'clicks'=>$data['clicks'][$key],'ctr'=>$data['ctr'][$key]);
}
echo '<pre>';
print_r($newArr);
于 2013-05-22T12:13:27.183 回答
0
$new_arr = your array;
$finalArray = array();
foreach($new_arr['dates'] as $key => $value){
    $finalArray[$value] = array(
        'publisherName'=>$new_arr['publisherName'][$key],
        'loaded'=>$new_arr['loaded'][$key],
        'clicks'=>$new_arr['clicks'][$key],
        'ctr'=>$new_arr['ctr'][$key]
    );
}

输出 :

Array
(
[2013-04-22] => Array
    (
    [publisherName] => Comp1
    [loaded] => 2189
    [clicks] => 0
    [ctr] => 0
)

[2013-04-23] => Array
    (
    [publisherName] => Comp2
    [loaded] => 37
    [clicks] => 0
    [ctr] => 0
)

)

于 2013-05-22T12:11:12.387 回答