【问题标题】:Array containing dynamic sub-arrays; only capturing the last sub-arry包含动态子数组的数组;只捕获最后一个子数组
【发布时间】:2014-01-02 01:50:26
【问题描述】:

我已经用头撞墙了一天半了。我需要将数组输入标签脚本。标签脚本工作正常,我已经通过使用静态写入的数组进行了验证。所需的数组包含从 mysql 查询中动态提取的子数组。

var_dump 显示 mysql 查询确实在提取所有相关记录。但是,在尝试创建包含所有这些子数组的主数组时遇到了问题。它只想创建一个带有 LAST 子阵列的主阵列。我希望这个描述能让你走上正轨。现在来看一些代码:

            while($row = mysql_fetch_array($get_labels))
         {
           foreach($row as $key => $value)
                                  { 
            $addresses=array(
                array(
                    "name" => $row['title1'],
                    "address_1" => $row['Street_No'],
                    "address_2" => $row['Street'],
                    "city" => $row['City'],
                    "state" => $row['State'],
                    "zipcode" => $row['zip']
                    )
                    );
                     }
            }

这是上面代码的示例 var_dump:

    array(1) { [0]=> array(6) { ["name"]=> string(12) "PERSONS NAME" 
    ["address_1"]=>string(4) "7006" ["address_2"]=> string(12) "N HOLIDAY DR"   
    ["city"]=> string(9) "SOMECITY" ["state"]=> string(2) "ST" 
    ["zipcode"]=> string(5) "00000" } }

以及标签脚本处理的输出:

    PERSONS NAME
    7006 N HOLIDAY DR
    SOMECITY, ST 00000  

现在真正的问题来了——我如何编写上面的代码以便得到:

    array(2 or more) { [0]=> array(6) { ["name"]=> string(12) "PERSONS NAME" 
    ["address_1"]=>string(4) "7006" ["address_2"]=> string(12) "N HOLIDAY DR"   
    ["city"]=> string(9) "SOMECITY" ["state"]=> string(2) "ST" 
    ["zipcode"]=> string(5) "00000" }{ [1]=> array(6) { ["name"]=> string(12) 
    "ANOTHER DUDE" ["address_1"]=>string(4) "7125" ["address_2"]=> string(12) 
    "N HOLIDAY DR" ["city"]=> string(9) "SOMECITY" ["state"]=> string(2) "ST" 
    ["zipcode"]=> string(5) "00000" } ...and so on, as long as the query runs }

这将像这样在标签脚本上输出:

    PERSONS NAME                    ANOTHER DUDE
    7006 N HOLIDAY DR               7125 N HOLIDAY DR
    SOMECITY, ST 00000              SOMECITY, ST 00000

标签脚本很好,正是上面的脚本提供了我需要帮助调试的标签脚本。

我当然希望有人可以帮助我。提前谢谢你。

【问题讨论】:

  • 我确实看过这个,谢谢。当我第一次在下面使用 Jack 的建议时,我让每个数组迭代了 12 次。真是一团糟!然后我完全删除了 foreach 语句,只使用了 while 循环,它工作得很好。再次感谢!

标签: php mysql arrays multidimensional-array


【解决方案1】:

不是每次都覆盖$addresses,而是需要追加:

$addresses[] = array(
    "name" => $row['title1'],
    "address_1" => $row['Street_No'],
    "address_2" => $row['Street'],
    "city" => $row['City'],
    "state" => $row['State'],
    "zipcode" => $row['zip']
);

另外,你不需要那个内部的foreach

$addresses = [];
while ($row = mysql_fetch_array($get_labels)) {
    $addresses[] = ...
}

【讨论】:

  • 对我来说世界级的 DUH 时刻!非常感谢杰克。一旦我使用它并删除了 foreach 循环,我得到了完美的结果。太棒了!
  • @BillIsaacs 不客气;顺便说一句,说的还不够,但请停止使用旧的mysql_ 函数:)
  • 杰克,你当然是对的,但我不是全职 php 编码员。我是一家初创公司的运营副总裁。我负担不起让程序员为我工作,所以我必须自己应付这些事情。当我有一点时间来研究它时,我会让自己更加熟悉 php 和更新的编码实践。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
相关资源
最近更新 更多