【问题标题】:Variables only printable from foreach loop只能从 foreach 循环打印的变量
【发布时间】:2021-05-21 19:44:16
【问题描述】:

我想在 PHP 的 foreach 循环中获取变量,当它在 while 循环中时,我可以打印所有对象数据,但是当我在 while 循环之外回显变量时,它只打印变量的值,如何将变量声明为全局变量并在任何地方访问它们的值?

<?php
              global $answerList, $countList;
              foreach( $finalAnswer as $answerID ) {
                foreach ($answers as $ans => $answer_list) {
                  foreach ($answer_list->unique('AnswerShortID') as $answer) {
                    if ($answer->AnswerShortID === $answerID){
                        $answerList = $answer->Text;
                        $countList = $answer_list->count();
                        echo $answerList;
                    }
                  }
                }
              } 
              echo $answerList;
              
              ?>

【问题讨论】:

  • 你放弃了吗?

标签: php arrays for-loop foreach global-variables


【解决方案1】:

您不需要global,每次循环都会覆盖变量,因此变量只包含最后一个。只需保存到数组中,以后可以循环使用或implode 显示:

              // you don't need to do this in the loop
              $countList = $answer_list->count();

              foreach ($answer_list->unique('AnswerShortID') as $answer) {
                if ($answer->AnswerShortID === $answerID){
                    $answerList[] = $answer->Text;
                }
              }

              echo implode(',', $answerList);
              //or
              foreach($answerList as $value) {
                  echo "<something>$value</something>other stuff";
              }

【讨论】:

    【解决方案2】:

    下面会将所有值存储在一个字符串中,然后您可以稍后将其回显。通过在等号之前添加一个句点,您可以在每次循环迭代时将新值添加到字符串的末尾。您的代码当前会删除最后一个值,并在每次完成循环时将其替换为新值。

    <?php
              global $answerList, $countList;
              foreach( $finalAnswer as $answerID ) {
                foreach ($answers as $ans => $answer_list) {
                  foreach ($answer_list->unique('AnswerShortID') as $answer) {
                    if ($answer->AnswerShortID === $answerID){
                        $answerList .= $answer->Text;
                        $countList .= $answer_list->count();
                        echo $answerList;
                    }
                  }
                }
              } 
              echo $answerList;
              
              ?>
    

    【讨论】:

    • 感谢您的快速回复。我想要的是使用它们在 while 循环中填充的值从 while 循环外部访问 2 个变量。代码不是刚刚在 PHP 标记中声明的函数
    • 你试过用数组代替吗?每次循环运行时,它都会覆盖最后一个值,这意味着您只会获得最后一个值集。如果您不想使用数组,可以通过在等号前添加句点来创建字符串:$answerList .= $answer->Text;
    • 我该怎么做,请帮我解决sn-p。谢谢
    • 我刚刚更新了我的答案。这行得通吗?
    • 谢谢,请稍等。 BRB。
    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多