在最里面的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');
}
}
}
}
答案 0 :(得分:0)
由于此循环可能获得两种格式(JSON编码的对象和数组),所以我永远无法使它正常工作。使两者都起作用要比仅用JavaScript困难得多,因此,我无需在服务器上进行修改,而是按照需要的客户端来格式化数据并将其发送出去。这种格式纯粹是演示性的,仅供个人使用,因此,如果有人放入调试器并更改代码以发送另一种格式就可以了,并且没有安全问题。
因此,最后,此代码用JS重写,由于JS使用相同的指针处理数组和对象,因此上述问题不再是问题。