PHP数组未按预期提取 - 这是为什么?

时间:2013-08-13 13:41:31

标签: php html arrays foreach extract

在foreach循环中使用数组时

$stdlist = rtrim(trim($_POST['stdlist'], '/'), '/');
$stdlist = explode('/' , $stdlist);
print_r($stdlist);
foreach($stdlist as $value)
{
    echo "<br>";
    echo $_POST[$value];
}

数组$ stdlist显然正在工作;打印时返回:

Array ( [0] => 1 [1] => 6 [2] => 7 [3] => 8 )

我的问题是,当我使用foreach循环一次从数组中提取一个值时,会将以下内容打印到页面:

4
4
Notice: Undefined offset: 7 in C:\Program Files\wamp\www...on line 35
Notice: Undefined offset: 7 in C:\Program Files\wamp\www...on line 35

我知道这不符合预期,因为我期待以下内容:

1
6
7
8

有人可以解释为什么会发生这种情况以及如何解决这个问题?谢谢: - )

4 个答案:

答案 0 :(得分:3)

您必须打印$value bacause $value原始数组值而不是索引。 并且您正在$stdlist中获取数组来扩展此变量$_POST['stdlist']

foreach($stdlist as $value)
{
  echo "<br>";
  echo $value;
}

现在您将获得所需的结果。

答案 1 :(得分:0)

当您对数组使用foreach循环时,

而不是使用echo $_POST[$value];只使用echo $value,而是自动提取每个节点上的值。

foreach ($array as $index=>$value){
   echo "index is $index and value associated with it is $value.";
}

希望这有帮助。

答案 2 :(得分:0)

foreach($stdlist as $value)
{
  echo "<br>";
  echo $value;
}

当你使用foreach时,$ value不是数组中的位置,如果你想使用你需要做的位置

for($pos=0; $pos<sizeof($stdlist); $pos++)
{
  echo "<br>";
  echo $stdlist[$pos];
}

答案 3 :(得分:0)

当使用foreach()循环时,我建议将位置和值分配给它们各自的变量,然后将它们打印到屏幕上以查看foreach循环如何赋值。

foreach( $stdlist as $position => $value ) {
   echo "The current position is $position, and the value of \$stdlist[$position] is
   $value";
}