将数组值传递给foreach,最后传递给另一个变量?

时间:2012-06-29 17:04:14

标签: php variables global-variables

在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以处理数组并吐出<option></option>代码。这是一个例子:

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;
?>

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

1 个答案:

答案 0 :(得分:0)

您可以使用函数来构建选项并将其返回:

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>';
}
?>