代码之家  ›  专栏  ›  技术社区  ›  Oscar Godson

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

  •  0
  • Oscar Godson  · 技术社区  · 7 年前

    在最里面剪出一些代码 foreach ,我正试图改变 HERE 使其改变原始值。我想基本上传递一个指针并改变它。我可以这样做 &$ 关键字在foreach中,但是(正如文档中所说的)它会导致一些错误行为,我正试图按照他们的方式来做,其他人也建议这样做。问题是我找到的所有示例都是针对单个foreach的,而不是针对嵌套的。

    下面的代码循环正确,但是当我到达 酒店雇员和饭馆雇员 它实际上不会改变原始值。也值得一提的是 $sources 可以是数组数组(按索引)或键值数组。不过,这个循环代码似乎可以遍历这两个函数,只是没有重写 $来源

    fwiw,在 &$ 我也试过:

    $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 回复  |  直到 7 年前
        1
  •  0
  •   Oscar Godson    6 年前

    由于这个循环可以获得两种格式(json编码的对象和数组),所以我永远无法让它正常工作。使两者都能工作比用javascript做要困难得多,所以我不在服务器上修改,而是按照我希望的客户端方式格式化数据并将其发送出去。此格式纯粹是表示性的,仅供个人使用,因此如果有人要放入调试器并更改代码以发送不同的格式,这很好,而且不存在安全问题。

    所以最后,这段代码是用js重写的,因为js使用相同的指针处理数组和对象,所以上面的问题不再是问题。