【问题标题】:get values foreach loop from php user defined function从php用户定义的函数中获取foreach循环的值
【发布时间】:2017-03-19 02:45:58
【问题描述】:

我有一个关于 PHP 函数的问题。一直在谷歌搜索,但找不到我的问题的令人满意的答案。

我尝试从自制函数内部的 foreach 循环中获取值:

function get_gemeente_by_id($gemeente_id)
{
    global $db;

    // Omzetten van integer (id) naar string (name)
    $query = $db->prepare("SELECT * FROM gemeenten WHERE id = {$gemeente_id}");
    $query->execute();

    foreach($query->fetchAll(PDO::FETCH_OBJ) as $gemeente)
    {
        $district       = $gemeente->district;
        $congregation   = $gemeente->gemeente;
    }
}

直接在页面顶部运行查询可以正常工作。但我想使用在我的函数中创建的值来回显它,如下所示:

我调用我的函数:

get_gemeente_by_id($_SESSION['gemeente_id']);

并且想要从函数内部的查询中回显出值。

<?= $district; ?> and <?= $congregation; ?>

我收到一条错误消息:“注意:未定义变量:http://localhost/etc 中的区域”

希望有人可以帮助我。我的页面中没有太多代码并尝试使用函数来完成它。

提前致谢。

【问题讨论】:

    标签: php function foreach-loop-container


    【解决方案1】:

    你应该通过你的函数返回数组试试这个:

    function get_gemeente_by_id($gemeente_id)
    {
       global $db;
       $arr = array()
    
    // Omzetten van integer (id) naar string (name)
    $query = $db->prepare("SELECT * FROM gemeenten WHERE id = {$gemeente_id}");
    $query->execute();
    
    foreach($query->fetchAll(PDO::FETCH_OBJ) as $gemeente)
    {
        $arr['district'][]  = $gemeente->district;
        $arr['congregation'][]   = $gemeente->gemeente;
    }
    return $arr
    }
    

    当你调用函数时:

    $arr = get_gemeente_by_id($_SESSION['gemeente_id']);
    foreach ($arr as $dist_con=>$b){
       foreach($b as $a=>$c){
       echo $dist_con.$a."=".$c
        }
       echo "<br>";
    }
    

    【讨论】:

      【解决方案2】:

      这是你的解决方案:

      // get_gemeente_by_id function
      function get_gemeente_by_id($gemeente_id)
      {
         global $db;
      $query = $db->prepare("SELECT * FROM gemeenten WHERE id =?;");
      $query->execute(array($gemeente_id));
      return $query->fetchAll(PDO::FETCH_ASSOC);
      }
      
      // Call to function and get associative array with expected data
      $arr = get_gemeente_by_id($_SESSION['gemeente_id']);
      foreach ($arr as $dist_con=>$b){
         foreach($b as $a=>$c){
         echo $dist_con.$a."=".$c
          }
         echo "<br>";
      }
      

      【讨论】:

      • 还有很多代码。没有办法在该函数中返回我的 foreach 循环的结果吗?我的意思是.. 我已经有了 $district 和 $congegation 两个字符串。如何在函数之外回显它们?
      • 返回一个数组比回显特定字符串更可重用,我建议您定义将来可以重用它们的函数。
      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多