【问题标题】:Pass array values into foreach and finally another variable?将数组值传递给foreach,最后传递给另一个变量?
【发布时间】:2012-06-29 17:04:14
【问题描述】:

在 PHP 中,处理变量中的循环的最佳做法是什么?让我解释一下。

我有一个名为 index.php 的文件,其中包含以下内容:

<?php 
$SELECT_INDUSTRY = array("Industry1", "Industry2", "Industry3");
require_once('form.inc');
?>
<html>
<head></head>
<body>
<?php echo $FORM_FIELD_INDUSTRY ?>
</body>
</html>

然后我有第二个名为 form.inc 的文件:

<?php
$FORM_FIELD_INDUSTRY = '<select><option value=>Select an Industry</option>'.$INDUSTRY.'</select>';
?>

这是需要的。我想将输入的数组值传递到 foreach 中以处理数组并吐出&lt;option&gt;&lt;/option&gt; 代码。这是一个例子:

foreach ($SELECT_INDUSTRY as $INDUSTRY) {
echo '<option value="$INDUSTRY">$INDUSTRY</option>';
}

所以这个函数会根据数组值构建我的选择选项。这可行,但是我如何能够将总值传递到我在上面的 form.inc 文件中定义的变量中?在 form.inc 文件中,我将 $INDUSTRY 作为变量,我想它需要从另一个函数返回某种形式。如果涉及到,这可能还需要全局变量在函数之间传递。有没有更好的处理方法?

我的最终目标是让变量 $FORM_FIELD_INDUSTRY 根据数组值吐出 foreach 函数。

解决方案

下面列出了解决方案,但是对于遇到此问题的任何人,这是我所做的:

index.php

<?php 
$SELECT_INDUSTRY = array("Industry1", "Industry2", "Industry3");
$FORM_SELECT_SIZE = ''; 
require_once('form.inc');
?>
<html>
<head></head>
<body>
<?php get_options( $FORM_FIELD_INDUSTRY ) ?>
</body>
</html>

form.inc

<?php
function get_options( $arr = array() ) {
    global $FORM_SELECT_SIZE;
    echo '<select id="industry" class="'.$FORM_SELECT_SIZE.'"><option value=>Select an Industry</option>';
    foreach( $arr as $option ) {
        echo '<option>'.$option.'</option>';
    }
    echo '</select></div></div>';
}
$FORM_FIELD_INDUSTRY = $SELECT_INDUSTRY;
?>

在函数和变量之间传递值的非常简单的解决方案。

【问题讨论】:

  • 你为什么不直接使用带有 foreach 的函数呢?
  • 我想过,但我无法让最终代码正常工作。我想我可以将 foreach 分解为一个函数,但是我将如何在变量声明中调用该函数?我不确定我能做到这一点。
  • 您可以将变量作为参数传递给您的函数,请查看下面答案中的代码以了解如何操作。
  • 看起来这成功了。我已经更新了我的原始问题以显示解决方案。

标签: php variables global-variables


【解决方案1】:

您可以只使用一个函数来构建选项并像这样返回它:

function get_options( $arr = array() ) {
    echo '<select>';
    foreach( $arr as $option ) {
        echo '<option>'.$option.'</option>';
    }
    echo '</select>';
}

然后在你的 HTML 中你可以这样称呼它:

<html>
<head></head>
<body>
<?php get_options( $SELECT_INDUSTRY ); ?>
</body>
</html>

因此,如果我将您提供给我们的代码放在首位并将其组合起来,它会如下所示:

<?php 
$SELECT_INDUSTRY = array("Industry1", "Industry2", "Industry3");
require_once('form.inc');
?>
<html>
<head></head>
<body>
<?php get_options( $SELECT_INDUSTRY ); ?>
</body>
</html>
<?php
function get_options( $arr = array() ) {
    echo '<select>';
    foreach( $arr as $option ) {
        echo '<option>'.$option.'</option>';
    }
    echo '</select>';
}
?>

【讨论】:

  • 我认为这实际上解决了我的问题。现在测试它,将发布结果。
  • 这个解决方案满足了我的需求。我将编辑我的原件以插入我所做的更改。
猜你喜欢
  • 2014-04-02
  • 2016-08-09
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多