Php 设置a++;数字变量作为数组键
我现在有这个代码,它获取日期和时间。我想创建一种编号索引,因为我在一个foreach循环中返回了大约10个日期和时间。它在一个函数中,我需要返回这个数组,以便在其他地方使用它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,
$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);