在多阵列PHP中保存时,字符串值已更改

时间:2015-08-19 04:57:24

标签: php arrays string input foreach

我从db中提取并保存日期和小时字符串,在数组中:

$array_likes_Days=$wpdb->get_results("SELECT time  , totalLikesDay  FROM pstableliker WHERE likeUrl='".$url_selec."' AND totalLikesDay !=0 ;");
$arrayDateHours;
$cont1=0; 
$cont2=0; 
foreach ($array_likes_Days as $key => $row) {

    $arrayDateHours[$cont1]=substr($row->time, 0, -9);
    var_dump(substr($row->time, 0, -9).'__'.$arrayDateHours[$cont1]);

    $arrayDateHours[$cont1][$cont2]=date('H:i', strtotime($row->time));
    var_dump(substr($row->time, 0, -9).'__'.$arrayDateHours[$cont1]);

    $cont1++;
    $cont2++;
    }

在第一个var_dump中输出:2015-07-21__2015-07-21一切顺利。

但在此行中保存一小时后:$arrayDateHours[$cont1][$cont2]=date('H:i', strtotime($row->time));第二个var_dump输出:2015-07-21__0015-07-21显示数组的值更改为:2015-07-21->0015-07-21,为什么在保存时会发生这种情况多阵列?

我想像这样在数组中保存日期和小时:

2015-07-21-->01:24
          -->04:12
          -->12:40

2 个答案:

答案 0 :(得分:2)

尝试替换此行

$arrayDateHours[$cont1][$cont2]=date('H:i', strtotime($row->time));

$arrayDateHours[$cont1][]=date('H:i', strtotime($row->time));

它将数据保存为

$arrayDateHours= array(1) {  ["2015-07-21"]=>  array(2) {    
  [0]=>
  string(1) "01:24"
  [1]=>
  string(1) "04:12"    } }

答案 1 :(得分:1)

尝试

$data = ['2015-08-19 05:11:44', '2015-08-19 05:15:11', '2015-08-19 05:17:38'];

//echo date('Y-m-d H:i:s', time());
$arrayDateHours = array();

$i = 0;
foreach($data as $time)
{
    $time = explode(' ', $time);

    $arrayDateHours[$time[0]][$i] = $time[1];
    $i++;
}

var_dump($arrayDateHours);

输出

array (size=1)
  '2015-08-19' => 
    array (size=3)
      0 => string '05:11:44' (length=8)
      1 => string '05:15:11' (length=8)
      2 => string '05:17:38' (length=8)