Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 设置a++;数字变量作为数组键_Php_Arrays_Foreach - Fatal编程技术网

Php 设置a++;数字变量作为数组键

Php 设置a++;数字变量作为数组键,php,arrays,foreach,Php,Arrays,Foreach,我现在有这个代码,它获取日期和时间。我想创建一种编号索引,因为我在一个foreach循环中返回了大约10个日期和时间。它在一个函数中,我需要返回这个数组,以便在其他地方使用它 $i = 0; foreach ($data as $key =>$value) { $new_data = array ( $i => array ( "date"=> $value->DATE,

我现在有这个代码,它获取日期和时间。我想创建一种编号索引,因为我在一个foreach循环中返回了大约10个日期和时间。它在一个函数中,我需要返回这个数组,以便在其他地方使用它

$i = 0;
    foreach ($data as $key =>$value) {
        $new_data = array (
            $i => array (
                "date"=> $value->DATE,
                "time"=> $value->TIME,
            )
        );
        $i++;
    }
我希望它看起来更像这样

Array (
    [0] => Array (
        [date] => whatever date
        [time] => whatever time
    )
    [1] => Array (
        [date] => whatever date
        [time] => whatever time
    )
    [2] .. etc
)
事实证明,这不是我得到的。我明白了

Array (
        [10] => Array (
            [date] => whatever date
            [time] => whatever time
        )

它只打印了一张/只给了我第十张。我如何让它继续使用$I变量,以允许我在编号索引中使用它?为什么只给我看第十个呢?

你可能只想要这个:

$i = 0;
foreach ($data as $key =>$value) {
    $new_data[$i++] = array (
            "date"=> $value->DATE;
            "time" => $value->TIME;
        )
    );
}
$new_data = array();
foreach ($data as $value) {
    $new_data[] = array (
        "date"=> $value->DATE;
        "time" => $value->TIME;
    );
}
首先,如果没有
[]
,您只需在每次迭代时为
$new\u data
变量分配一个新值。使用它,您可以在每一步向数组中追加一个新元素;这显然是在这种情况下应该做的

其次,在这种情况下,您不必使用其他变量:索引从0开始,并且随着每个新的
[]
的增加,它应该增加

最后(感谢@reformed在评论中提到这一点),如果您实际上不使用数组的键,则不必编写长格式的
foreach
<代码>将每个$arr转换为$val即可


在我看来,可以用以下文字更简洁地改写:

如果希望基于另一个数组创建普通数组,并且这个新数组的每个元素都以原始集合的相应元素为基础,则此函数通常非常适合


我在这里使用了一个匿名函数作为
array\u map
的参数,它从PHP5.3开始就可以使用。

它可能是一个输入错误,但是您在time
“time=>
之后缺少一个双引号,如果您没有使用$key,那么在foreach语句
foreach($data as$value)中省略它
可能只是一个输入错误,因为代码显然在工作(只是没有预期);分号也应该打破这一点。将两者都编辑掉。啊,是的。数组有时会占上风。
$new_data = array_map(function($val) { return array(
  'date' => $val->DATE,
  'time' => $val->TIME
); }, $data);