【问题标题】:array looping strange behavior in php数组循环在php中的奇怪行为
【发布时间】:2009-10-29 14:21:41
【问题描述】:

我有一个索引数组,它是使用此代码从关联数组生成的

$index_arr = array();
foreach($assoc_arr as $key => $val ){
   $index_arr .= $val;
}

当我使用print_r($index_arr); 打印它时,它工作正常。但是当我尝试用 foreach 打印它时,我收到一个错误“为 foreach() 提供的参数无效”

foreach($index_arr as $one){
   echo "one: $one<br />";
}

我很确定这是正确的语法还是我在一天中的这个时候太累了?

【问题讨论】:

  • +1 来抵消反对票,因为问题很明确,反对票没有得到解释。

标签: php arrays


【解决方案1】:

您可以使用 .= 运算符将数组转换为字符串。你想使用:

$index_arr[] = $val;

追加到末尾。

同样在这种特殊情况下,您可以这样做:

$index_arr = array_values($assoc_arr);

这正是你的循环所做的。

【讨论】:

    【解决方案2】:

    当您执行$index_arr .= $val; 时,PHP 执行了字符串操作。你需要做$index_arr[]=$val;

    【讨论】:

      【解决方案3】:

      需要这样:

      $index_arr = array();
      foreach($assoc_arr as $key => $val ){
         $index_arr[] = $val;
      }
      

      还有

      foreach($index_arr as $key=>$data){
         echo "Key: ".$key." Data: ".$data."<br />";
      }
      

      【讨论】:

      • 或者直接使用$index_arr = array_values($assoc_arr); :)
      • 谢谢@Lukas 刚刚想到这一点,我正在回去编辑的路上,干杯
      【解决方案4】:
      $index_arr .= $val;
      

      应该是

      $index_arr[] = $val;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多