【问题标题】:How To Change My Array Format In PHP如何在 PHP 中更改我的数组格式
【发布时间】:2015-08-18 19:42:50
【问题描述】:

我的代码生成这样的数组

Array
(
[0] => Array
    (
        [0] => 2015-05-28
        [1] => 1
    )
[1] => Array
    (
        [0] => 2015-05-29
        [1] => 1
    )
[2] => Array
    (
        [0] => 2015-06-02
        [1] => 2
    )
)

我想把它转换成下面的一样

array(
    [0] => Array
    (
        [0] => 05
        [1] => 2
    )
    [1] => Array
    (
        [0] => 06
        [1] => 2
    )
);

如何转换第一个月这样的数组,然后是第二个值的总和

【问题讨论】:

  • 发布你的原始数组结构
  • 编辑问题请查收
  • 你的代码没有意义。请发布您的预期输出、当前输出和当前输入!
  • 最终值(182020)应该如何产生或它们来自哪里并不明确
  • 即使您的更新与您的预期输出没有任何关系

标签: php arrays date converter


【解决方案1】:

非常简单的解决方案:

foreach($array as $date=>$entry) {
    $month = substr($date, 3, 2); // <-- this requires the date strings to always have the exact same structure
    if(!isset($newArray[$month]))
        $newArray[$month] = 0;
    $newArray[$month] += $entry;
}

【讨论】:

  • 如果我们需要解析日期,最好使用date&amp;strtotime而不是substr
  • 一般是可以的,但是 substr 肯定更快,如果结构总是一样的话就没有必要了。
【解决方案2】:

key中提取月份,然后检查输出数组中的月份是否存在。

<?php

$array = array(
    array(
        '2015-05-28',
        1
    ), array(
        '2015-05-29',
        1
    ), array(
        '2015-06-02',
        2
    )
);

$output = array();

foreach ($array as $val) {
    $month = date('m', strtotime($val[0]));

    if (isset($output[$month])) {
        $output[$month] += $val[1];
    } else {
        $output[$month] = $val[1];
    }
}

echo '<pre>';

print_r($output);

/*
    Array
    (
        [05] => 2
        [06] => 2
    )
*/

?>

【讨论】:

  • 你好豹谢谢你的回复,但你能不能再检查一下我的问题有一些变化
  • @vaibhavahalpara:所以只需使用嵌套的foreach 循环。主要思想是一样的。
【解决方案3】:
$array = array(
    array(
       '2015-05-28',
        1
    ), 
    array(
       '2015-05-29',
        1
    ), 
    array(
       '2015-06-02',
        2
    )
 );


 $output = array();
 $a=array();
 $b=array();
 foreach ($array as $val) {
    $month = date('m', strtotime($val[0]));
      if (isset($output[$month])) {
            $output[$month] += $val[1];
        } else {
            $output[$month] = $val[1];
        }
      }
      foreach (  $output as $key => $value) {
           $b[] = array($key,$value);
      }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2019-04-10
    • 1970-01-01
    • 2014-05-03
    • 2016-08-23
    • 1970-01-01
    相关资源
    最近更新 更多