2012-06-29 62 views
0

在PHP中,处理变量循环的最佳做法是什么?让我解释。将数组值传递给foreach,最后是另一个变量?

我有一个名为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以处理该数组并且吐出​​3210代码。这里有一个例子:

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

所以这个函数会根据数组值创建我的选择选项。这是有效的,但是我怎样才能将总值传递给我在上面的form.inc文件中定义的变量?在form.inc文件中,我使用$ INDUSTRY作为变量,我想这需要某种来自其他函数的返回。这可能还需要全局变量在函数之间传递。有没有更好的方法来处理这个问题?

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

SOLUTION

的解决方案如下所列,但对任何人碰到这个来了,这里是我做过什么:

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

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

+0

为什么你不只是使用一个函数那里的foreach? – Gazillion

+0

我想到了这一点,但我无法获得最终的代码正确工作。我想我可以将foreach分解为一个函数,但是如何在变量声明中调用该函数?我不确定我能做到这一点。 – stebesplace

+0

您可以将变量作为参数传递给您的函数,查看下面答案中的代码以查看方式。 – Gazillion

回答

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

我认为这实际上解决了我的问题。现在测试它,将张贴结果。 – stebesplace

+1

此解决方案适用于我的需求。我将编辑我的原稿以插入我所做的更改。 – stebesplace

相关问题