【问题标题】:Create a foreach loop function that uses various arrays (PHP)创建一个使用各种数组的 foreach 循环函数 (PHP)
【发布时间】:2014-02-09 13:42:10
【问题描述】:

这里是新手

我正在做一个小项目,我在大约 12 页上使用了下面显示的以下代码,并且及时可能会在另外 12 页上使用它。对我来说,这似乎是我应该把它变成一个函数,我查看了 PHP.NET 并阅读了一些很酷的东西,并做了一些谷歌搜索,但没有以我理解的方式回答我的问题。我了解如何制作通用函数(即函数 EchoSomething(){echo 'print something';}。但我不明白如何构造一个调用数组并在 for each 循环中运行它的函数。

这是我的起始代码,除了每次使用不同的数组名称之外,其他方面都是相同的:

<?php

foreach($aaGenR1 AS $key => $value){

echo '<div class="3u"><a href="_img/fulls/' . $key .'" class="image full"><img src="_img/thumbs/' . $key .'" alt="" title="' . $value .'" /></a></div>';

}

?>

在我看来,我应该能够写出类似的东西

function GetPortfolioArray(){

echo '<div class="3u"><a href="_img/fulls/' . $key .'" class="image full"><img src="_img/thumbs/' . $key .'" alt="" title="' . $value .'" /></a></div>';

}

然后当我在我的代码中调用该函数时,我会写 'GetPortfolioArray($arrayNameToBeUsed)'

我想我已经很接近了,但我希望我已经很接近了。帮助表示赞赏。 谢谢。

干杯

【问题讨论】:

    标签: php arrays function


    【解决方案1】:

    首先,创建一个您包含的function.php 文件,或类似Util.class.php 的文件。他们将持有你的任何进一步的职能。我宁愿在一个名为 XXXXXX.class.php 的文件中使用静态函数。我的在每个项目中总是相同的,称为“Util.class.php”。我所有的功能都在那里。

    添加一个require_once('Util.class.php');在任何需要你的函数的文件中。

    要回答您的问题,我会执行以下功能:

    /**
    * A short description of your function
    * @return void
    /**
    public static function getPortofolioArray($array)
    {
        foreach ($array as $key => $val)
        {
            echo '<div class="3u"><a href="_img/fulls/'.$key.'" class="image full"><img src="_img/thumbs/'.$key.'" alt=""  title="'. $value.'" /></a></div>';
        }
    }
    

    如果你需要这个函数,首先在你的文件顶部包含 Util:

    require_once('Utils.class.php')
    

    然后在你需要的地方调用函数:

    Utils::getPortofolioArray($yourArray);
    

    当然这是对问题的直接回答,我没有改进你的想法或任何东西。

    请注意命名函数的方式。基本上,您将其称为“getPortoFolioArray”,但您不在函数中执行此操作,而是将内容回显并且不返回任何数组。而是将其称为:“printPortofolioLinks”,因为它实际上就是这样做的......

    【讨论】:

    • 函数类?我目前正在介绍 Csharp,我相信它会涵盖课程,但我们还没有。我不知道 PHP 可以有类。我确实创建了一个函数文件,我在其中放置了我试图调用的函数。我将不得不对此进行试验,因为这听起来是一个了不起的想法——向提出这个想法的人和你分享的人表示敬意。并感谢您的 cmets - 我看到我需要在我的括号中包含 $array 并且在将代码重写为我忘记添加 for 循环的函数时(Duh!)。
    • 问题 - 我为什么不称它为“getStuff”?我得到了我想要的东西,不是吗?为什么我们要说 echo 或 printWhatever - 请您再详细说明一下。非常感谢您 - 现在就尝试所有这些信息,并会以充满希望的成功进行报告!
    • 我尝试了这个,它几乎按预期工作。我取回了我的图像和链接,但在每个图像和链接之后,我还在函数文件的第 36 行收到了一个未定义变量通知,其内容为: echo '
      ';是因为我使用了两次 $key 吗?
    • 想通了 - 我需要将 $val 更改为 $value。感谢您的帮助!
    【解决方案2】:

    你必须像这样在函数内部创建 foreach:

    function GetPortfolioArray($var){
      foreach($var as $key => $value){
      echo '<div class="3u"><a href="_img/fulls/' . $key .'" class="image full"><img src="_img/thumbs/' . $key .'" alt="" title="' . $value .'" /></a></div>';
      }
    }
    

    然后你可以GetPortfolioArray($randomvar);

    $randomvar 显然是数组

    编辑:请考虑一下,我假设您的回声中的任何内容都是一行或一组,显然会重复自己。如果这不是你想要的,那么这个循环不是正确的方法。

    【讨论】:

    • 谢谢,是的,它是一个集团,所以我会调用该函数几次。当我把它记下来时,我将尝试构建一个 foreach 循环,其中包含一个 foreach 循环来处理更长数组的多行。我要迈出小步,因为我还是个小婴儿 :D 谢谢你的智慧!
    【解决方案3】:

    首先我推荐一些基本的 PHP 教程或者更好的一些基本的软件开发教程。这是每个初学者教程都会回答的问题。

    您想要的第二个函数是将数组作为参数,对其进行迭代并将键和值插入字符串模板。回答你的问题:

    function printPortfolioArray($portfolioArray)
    {
        foreach($portfolioArray as $key => $value)
        {
            echo '<div class="3u"><a href="_img/fulls/' . $key .'" class="image full"><img src="_img/thumbs/' . $key .'" alt="" title="' . $value .'" /></a></div>';
        }
    }
    

    最好将模板移动到第二个参数中,并将 $key 和 $value 替换为 sprintf() and printf() 中定义的格式变量

    function printArray($array, $template)
    {
        foreach($array as $key => $value)
        {
            printf($template, $key, $value);
        }
    }
    

    例子:

    $array = ...;
    $template = '<div class="3u"><a href="_img/fulls/%1$s" class="image full"><img src="_img/thumbs/%1$s" alt="" title="%2$s" /></a></div>';
    printArray($array, $template);
    

    【讨论】:

    • 这里有很多值得咀嚼的东西 - 谢谢。会探索。再次感谢您的明智建议。永远不要赢得 sprintf() 或 printf() 的头衔。再过两周我们不会在我的课堂上开始活动 - 我正在尝试保持领先,这样我就不会放慢我的课堂速度。向前练习好吗?再次感谢您!
    • 哇 - 这是巨大的 - 它真的让我了解了很多东西。我希望我能投票给两个答案——这里的所有选项都让我大开眼界。非常感谢!
    • 我完全建议你自己做一些事情。尤其是“再过两周”来学习函数是疯狂的。这个案例就是最好的例子。
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多