【问题标题】:how to add elements to an array in a loop using php如何使用php在循环中向数组中添加元素
【发布时间】:2012-03-06 10:38:21
【问题描述】:

我正在动态尝试填充多维数组并遇到了一些麻烦。

我有一份美国各州的列表。在我的循环中,像这样的 $states[nc]、$states[sc] 等关联数组我想将城市附加到每个州,因此 $states[nc][cities] 包含一个城市数组。我坚持逻辑。

foreach($states as $state) {
    $data[$state] = $state;

    foreach($cities as $city) {
      $data[$state]['cities'] .= $city;
     }
}

我知道串联是不正确的,但我不确定如何向这个数组添加元素。我不断收到 array_push 错误。

添加这些元素的正确方法是什么?

【问题讨论】:

  • 只用 $data[$state]['cities'] = $cities; 替换内部 foreach应该做的伎俩。

标签: php arrays


【解决方案1】:

与不关心键时添加到数组的方式相同:

$data[$state]['cities'][] = $city;

【讨论】:

  • 做到了!我试图让它过于复杂,但这给了我正确的结果。谢谢!
  • @user9437856 是的,就一行代码,执行起来看看不难。
  • @Jon,感谢您的回复。我试图在这里解决您的问题:stackoverflow.com/questions/61977036/…
【解决方案2】:

在 PHP 中,你可以在不参考实际索引的情况下填充数组。

$newArray = array();
foreach($var in $oldArray){
$newArray[] = $var;
}

【讨论】:

  • 更简单的语法:$newArray = array_values($oldArray);
  • foreach()in?没有。 3v4l.org/0vmXZ
【解决方案3】:

要添加元素,请使用空括号。

foreach($states as $state) {
    foreach($cities as $city) {
       $data[$state][] = $city;
    }
}

这将创建一个这样的数组

array(
  'nc' => array('city1', 'city2', ...),
  'sc' => array('city1', 'city2', ...)
)

参见“使用方括号语法创建/修改”下的manual

【讨论】:

    【解决方案4】:
    foreach($states as $state) {
        $data[$state] = $state;
    
        foreach($state->cities as $city) {
          $data[$state][] = $city;
        }
    }
    

    使用空括号将元素添加到数组中。

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2011-03-07
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2010-10-15
      相关资源
      最近更新 更多