【问题标题】:How to assign PHP variables from foreach loop output?如何从 foreach 循环输出中分配 PHP 变量?
【发布时间】:2014-04-10 21:08:16
【问题描述】:

我有一个 foreach 循环,它打印出数据库表中所有条目的用户名,如下所示:

foreach($results as $result){

echo $result->username;
echo '<br>';

}

随着越来越多的用户被添加到表中,该列表将会增长。我想获取完整列表并将每个条目分配给一个单独的 PHP 变量,以便稍后在 PHP 脚本中使用。最好的方法是什么?

【问题讨论】:

  • 你的意思是像 $results[0]、$results[1]、$results[2] 等等?
  • 你有一个列表,它会增长。最好的方法是使用你已经拥有的数组。为什么要为每个变量设置单独的变量?
  • 没有。你不想要一个单独的变量。考虑当您达到 50,000 个用户时。你真的想要 50,000 个单独的变量吗?一定不行。你已经把它们放在一个漂亮整洁的阵列中。把它们放在那里。
  • 你是对的,我将它们放在一个数组中,所以我想我的误解与我稍后如何在脚本中使用这些数组值有关。我正在尝试将每个用户名应用为 javascript 变量。我在想我需要将它们单独拉出来,但现在有了这些 cmets,我将根据预先存在的数组重新考虑这一点。谢谢。
  • 您的 javascript 需要访问表中的每个用户名,还是只需要访问几个?如果只是几个,你可以考虑使用ajax来获取用户名。例如,如果您正在检查用户名是否存在,您可以编写一个类似“checkUsername.php”的脚本,该脚本会查询数据库中的用户名(作为 POST 变量提供),并输出“true”或“false”。然后使用ajax将用户名post到checkUsername.php并检查输出。

标签: php arrays variables loops foreach


【解决方案1】:

你不想要单个变量,试试数组:

foreach($results as $result){
    $names[] = $result->username;
}

在 PHP 7 中更简单:

$names = array_column($results, null, 'username');

【讨论】:

    【解决方案2】:

    根据您的 cmets I am trying to apply each username as a javascript variable,您所需要的似乎是:

    <script type="text/javascript">
      var usernames = <?php echo json_encode($results); ?>;
    </script>
    

    当然,如果您只需要$results 数组中的一个元素,您应该首先使用其他答案之一生成一个简化列表;如果您使用整个 $results 数组,则其中的所有信息都将发送到浏览器/访问者可见。

    【讨论】:

      【解决方案3】:

      将它们放在一个数组中:

      $names = array();
      foreach ($results as $result) {
          $names[] = $result->username;
      }
      

      【讨论】:

        【解决方案4】:

        foreach 循环太过时了:p

        $names = array_map(function($r) {return $r->username;},$results);
        

        【讨论】:

          【解决方案5】:

          我不知道你为什么也想要...... 但你可以这样做......

          foreach($results as $result)
          {
              $$result->username = $result;
           }
          

          这回答了你的问题。但是为什么有人会这样做是我无法理解的

          【讨论】:

            【解决方案6】:

            我使用下面的代码

            <?php
            
            $string = 'a|b|c|d|e|f';
            
            $tags = explode('|' , $string);
            
            
            foreach($tags as $i =>$key) {
            $i >0;
                 $a[$i]=$key .'</br>';
            
            }
            
            echo $a[3];
            

            祝你好运

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-05-27
              • 1970-01-01
              • 2018-03-29
              • 1970-01-01
              • 2013-08-12
              • 2012-12-20
              • 2022-01-12
              相关资源
              最近更新 更多