【问题标题】:Foreach returns only last element, but it was working beforeForeach 只返回最后一个元素,但它之前工作过
【发布时间】:2017-05-14 07:29:21
【问题描述】:

我有一个 foreach 循环,它在开始时工作,但在重新加载页面后,我只得到最后一个元素。这是代码

$exploded = explode(" ",$someString);
            foreach ($exploded as $word) {
                $sentence = " this is $word";
            }
            echo $sentence;

起初我得到一个长字符串,由重复的“this is”和唯一的 $word 组成,但现在我只得到一个“this is”和最后一个 $word。对我来说重要的是整个事情都是可变的,因为我以后需要使用那个字符串。

【问题讨论】:

  • 将你的 echo 语句放在你的 foreach 循环中或使用连接使其成为一个字符串
  • 我知道这会起作用,但我需要将整个字符串专门放在一个变量中。
  • 所以放到一个变量里
  • 抱歉,您是否阅读了整个代码? Foreach 将字符串放入 $sentence 变量中,但由于某种原因,只有数组中的最后一个元素。
  • 那是因为你没有按照我在第一条评论中所说的去做。所以,是的,我确实阅读了整个代码。是不懂PHP基础造成的错误。

标签: php loops foreach concatenation


【解决方案1】:
$exploded = explode(" ", $someString);
$sentence = '';
foreach ($exploded as $word) {
    $sentence .= $word;
}
echo $sentence;

【讨论】:

  • 这解决了我使用上一个答案时出现的问题。谢谢。原来你必须在分配连接之前设置空字符串,否则你会得到通知。
【解决方案2】:

循环的每次迭代都会覆盖 $sentence 变量。而不是:

$sentence = " this is $word";

您必须将 $sentence 与新字符串连接起来:

$sentence .= " this is $word";

【讨论】:

  • 谢谢!现在工作。现在只有一个小问题。 PHP 现在输出正确的字符串但也错误未定义变量:句子(在线 $sentence .= “这是 $word”;)。为什么?
猜你喜欢
  • 2017-04-08
  • 2015-04-29
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
相关资源
最近更新 更多