在嵌套循环中覆盖PHP中的原始数组值

时间:2018-07-07 05:59:50

标签: php loops

在最里面的foreach上切出一些代码,我正在尝试更改HERE以使其改变原始值。我想基本上传递一个指针并对其进行更改。我可以通过foreach中的&$关键字来做到这一点,但是(如文档所述)它会导致某些错误行为,我正在尝试按照他们以及其他建议的方式进行操作。问题是我发现的所有示例都是针对单个的foreach,而不是嵌套的。

以下代码正常循环,但是当我到达HERE时,它实际上并没有改变原始值。还值得一提的是,$sources可以是数组(按索引)或键值数组。这段循环代码似乎可以同时遍历这两种情况,只是不会覆盖$sources

的原始值

&$上方,我也尝试过:

$sources[$sourceKey][$rowKey][$cellKey] = $date->format('m/d/Y');

如果我打印$sources[$sourceKey][$rowKey][$cellKey]会返回正确的值,但它仍不会覆盖原始数组。

function convertDates($sources) {
    foreach($sources as $sourceKey => $sourceValue){
        foreach ($sourceValue as $rowKey => $rowValue) {
            foreach ($rowValue as $cellKey => $cellValue) {
                HERE = $date->format('m/d/Y');
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于此循环可能获得两种格式(JSON编码的对象和数组),所以我永远无法使它正常工作。使两者都起作用要比仅用JavaScript困难得多,因此,我无需在服务器上进行修改,而是按照需要的客户端来格式化数据并将其发送出去。这种格式纯粹是演示性的,仅供个人使用,因此,如果有人放入调试器并更改代码以发送另一种格式就可以了,并且没有安全问题。

因此,最后,此代码用JS重写,由于JS使用相同的指针处理数组和对象,因此上述问题不再是问题。