为什么我不能用 foreach 循环更新数组中的数据?

Why can#39;t I update data in an array with foreach loop?(为什么我不能用 foreach 循环更新数组中的数据?)
本文介绍了为什么我不能用 foreach 循环更新数组中的数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在尝试对数组中的数据运行清理作业,特别是将纪元时间转换为 YYYY-MM-DD.

我最初尝试过这个功能:

foreach ($data as $row) {$row['eventdate'] = date('Y-m-d', $row['eventdate']);}echo '

';打印_r($数据);echo '</pre>';

但是,当我输出数据时,foreach 循环并没有更新数据.

以下 for 循环确实有效:

for ($i=0; $i

为什么第一个循环失败而第二个循环成功?他们不一样吗?

解决方案

当您以目前的方式使用 foreach 循环时,foreach ($data as $row){, $row 被按值"使用,而不是按引用".

尝试通过将 & 添加到 $row 来更新引用:

foreach ($data as &$row) {$row['eventdate'] = date('Y-m-d', $row['eventdate']);

或者,您可以使用键/值方法:

foreach ($data as $index => $row) {$data[$index]['eventdate'] = date('Y-m-d', $row['eventdate']);

I'm trying to run a clean up job on data in an array, specifically converting epoch time to YYYY-MM-DD.

I tried this function originally:

foreach ($data as $row) {
    $row['eventdate'] = date('Y-m-d', $row['eventdate']);
}

echo '<pre>';
print_r($data);
echo '</pre>';

However the foreach loop didn't update the data when I output it.

The following for loop did work:

for ($i=0; $i<count($data); $i++) {
    $data[$i]['eventdate'] = date('Y-m-d', $data[$i]['eventdate']);
}

Why did the first loop fail and the second work? Aren't they the same?

解决方案

When you're using a foreach loop in the way you currently are, foreach ($data as $row) {, $row is being used "by-value", not "by-reference".

Try updating to a reference by adding the & to the $row:

foreach ($data as &$row) {
    $row['eventdate'] = date('Y-m-d', $row['eventdate']);

Or, you can use the key/value method:

foreach ($data as $index => $row) {
    $data[$index]['eventdate'] = date('Y-m-d', $row['eventdate']);

这篇关于为什么我不能用 foreach 循环更新数组中的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Foreach for arrays inside of an array(Foreach 用于数组内的数组)
PHP array get next key/value in foreach()(PHP 数组在 foreach() 中获取下一个键/值)
Using preg_match on a multidimensional array to return key values arrays(在多维数组上使用 preg_match 返回键值数组)
php foreach as key, every two number as a group(php foreach 为key,每两个数字为一组)
Treat a PHP class that implements Iterator as an array(将实现 Iterator 的 PHP 类视为数组)
php foreach, why using pass by reference of a array is fast?(php foreach,为什么使用数组的引用传递很快?)