【问题标题】:PHP foreach loop not reading values from arrayPHP foreach循环不从数组中读取值
【发布时间】:2016-06-18 12:38:36
【问题描述】:

我有一个简单的 PHP 数组,其中包含来自复选框的数据。我需要将值添加到数组中,然后将数据插入数据库。它有效,但 foreach 不是侵权参数。

所以我用增量测试:

$arr = array();
array_push($arr, $_POST['chbox']);

它看起来像数组中的123,125(两个元素) 下一步是返回元素的数量(或下一步中的值):

$id=0;
foreach(  $arr as $row)
{
    $id++;                              
};

并返回$id=1;

如果我正在尝试读取值:

foreach(  $arr as $row)
{
    $row[$id]   
    $id++;
};

只返回123

【问题讨论】:

  • 使用$arr = $_POST['chbox'];
  • 这太奇怪了。你怎么知道$row[$id] 会返回那个?没有echo。另外,如果您只想将字符串键转换为数字,请查看array_values
  • 哇,这个问题很多。在你的array_push 之后,做一个var_dump($arr); - 你得到了什么?那么 foreach 应该很简单:foreach($arr AS $i => $row) {echo $row[$i];}。注意 - 如果 $_POST 是一个复选框,并且未选中该复选框,则 $_POST 键将为空,实际上不会返回任何内容。
  • 还要获取元素个数,使用count($arr)

标签: php arrays loops


【解决方案1】:

如果您正在执行 foreach,则 $row 已经是该值。

foreach($arr as $row) {
    echo $row;
    $id++;
}

【讨论】:

  • 在 php 中,循环“body”不应以分号结尾
【解决方案2】:

请尝试关注

foreach($arr as $row){
     echo $row;
};

编辑 1: 最好使用var_dump($_POST["chkbox"])print_r($_POST["chkbox"]) 来查看你得到的数组。然后,您将更容易决定如何获取数据。

【讨论】:

【解决方案3】:
$arr =array(123,125);

foreach($arr as $arrr):
   echo $arrr.',';
endforeach;

输出将是:

123,125,

【讨论】:

  • 这里为什么使用foreach 约定?花括号是相当标准的 - 您使用的格式更典型的是嵌入在模板中的 php。
  • 您使用大括号。我只是提供示例,我习惯使用冒号和分号而不是花括号。 :)
【解决方案4】:

在您的 foreach() 循环中,$row 只是一个数组值。不是数组。替换为$arr 应该可以解决。

$id = 0;
foreach( $arr as $row ){
    echo $arr[$id];
    $id++;
}
echo 'Total items: ' . $id; // OR count( $arr );

【讨论】:

  • 如果您像这样使用密钥 ($id),为什么还要循环使用 foreach? xD
  • 这就是 OP 构建循环的方式。我只是在纠正他的变量错误。
猜你喜欢
  • 2010-12-13
  • 1970-01-01
  • 2019-05-11
  • 2011-06-09
  • 2020-05-17
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
相关资源
最近更新 更多