Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询中的多维数组_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

Php MySQL查询中的多维数组

Php MySQL查询中的多维数组,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我正在尝试使用start\u date和end\u date值创建多维数组 $array = []; $i = 0; while ($row = mysqli_fetch_assoc($result)) { $array[$i]['start_date'] = $row['current_status_start_time']; $array[$i]['end_date'] = ''; $i++; } print_r($array); 返回的数组如下所示: Arr

我正在尝试使用
start\u date
end\u date
值创建多维数组

$array = [];
$i = 0;

while ($row = mysqli_fetch_assoc($result)) {
    $array[$i]['start_date'] = $row['current_status_start_time'];
    $array[$i]['end_date'] = '';
    $i++;
}
print_r($array);
返回的数组如下所示:

  Array ( 
    [0] => Array (
         [start_date] => 2013-07-25 11:18:42
         [end_date] => )
    [1] => Array (
         [start_date] => 2013-07-26 05:24:08
         [end_date] => )
    [2] => Array ( 
         [start_date] => 2013-07-31 17:25:05
         [end_date] => )
 ) 
foreach($mainArray as $key => $value)
{
    $next = $key + 1;

    if(!is_null($mainArray[$next]['start_date']))
    {
        $mainArray[$key]['end_date'] = $mainArray[$next]['start_date'];
    }
    else
    {
        $mainArray[$key]['end_date'] = current_date;
    }
}

print_r($main_array);
结束日期
应获取下一个数组
[开始日期]
节点值:

        Array ( 
    [0] => Array (
         [start_date] => 2013-07-25 11:18:42
         [end_date] =>   **2013-07-26 05:24:08**)
    [1] => Array (
         [start_date] => **2013-07-26 05:24:08**
         [end_date] =>   2013-07-31 17:25:05)
    [2] => Array ( 
         [start_date] => 2013-07-31 17:25:05
         [end_date] => current_date)
 ) 
正如您在上一个代码示例中所看到的,
array[0][end\u date]
应该获取
array[1][start\u date]
值,依此类推,最后一个数组
end\u date
应该获取当前时间值,因为存在数组的末尾


我应该使用第二个循环来实现这一点吗?或者有其他更简单的方法吗?

这应该可以满足您的需求:

$array = [];
$i = 0;

while ($row = mysqli_fetch_assoc($result)) {
    $array[$i]['start_date'] = $row['current_status_start_time'];
    $array[$i]['end_date'] = '';
    if ($i > 0){
        // if we are pass the first item set the previous item to the current start date
        $array[$i-1]["end_date"] = $array[$i]['start_date'];
    }
    $i++;
}
// fill in the last end_date with the current_date
$array[$i]["end_date"] = date("Y-m-d H:i:s");
print_r($array);

这会让你得到你想要的:

$array = [];
$i = 0;

while ($row = mysqli_fetch_assoc($result)) {
    $array[$i]['start_date'] = $row['current_status_start_time'];
    $array[$i]['end_date'] = '';
    if ($i > 0){
        // if we are pass the first item set the previous item to the current start date
        $array[$i-1]["end_date"] = $array[$i]['start_date'];
    }
    $i++;
}
// fill in the last end_date with the current_date
$array[$i]["end_date"] = date("Y-m-d H:i:s");
print_r($array);

我会打个圈。大概是这样的:

  Array ( 
    [0] => Array (
         [start_date] => 2013-07-25 11:18:42
         [end_date] => )
    [1] => Array (
         [start_date] => 2013-07-26 05:24:08
         [end_date] => )
    [2] => Array ( 
         [start_date] => 2013-07-31 17:25:05
         [end_date] => )
 ) 
foreach($mainArray as $key => $value)
{
    $next = $key + 1;

    if(!is_null($mainArray[$next]['start_date']))
    {
        $mainArray[$key]['end_date'] = $mainArray[$next]['start_date'];
    }
    else
    {
        $mainArray[$key]['end_date'] = current_date;
    }
}

print_r($main_array);

我会打个圈。大概是这样的:

  Array ( 
    [0] => Array (
         [start_date] => 2013-07-25 11:18:42
         [end_date] => )
    [1] => Array (
         [start_date] => 2013-07-26 05:24:08
         [end_date] => )
    [2] => Array ( 
         [start_date] => 2013-07-31 17:25:05
         [end_date] => )
 ) 
foreach($mainArray as $key => $value)
{
    $next = $key + 1;

    if(!is_null($mainArray[$next]['start_date']))
    {
        $mainArray[$key]['end_date'] = $mainArray[$next]['start_date'];
    }
    else
    {
        $mainArray[$key]['end_date'] = current_date;
    }
}

print_r($main_array);