我一直在寻找答案,但也许是因为我在搜索错误的术语或概念 - 我还没有找到关于如何对提取的参数执行操作的任何线索。
我有一个动态的数组(我无法预测有多少$vars
或者是什么名称或类型)
global $o99_option;
extract( $o99_option );
所以现在,从理论上讲,我可以有任意数量的$vars
任意名称..
示例:
$first_var = 'first-var';
$my_second_var = 'another';
$enigma = NULL;
$answer = '42';
我的问题是 - 如何以一种影响所有创建的$vars
的方式对提取结果(提取后)执行操作?
trim
所有这些变量 - 我该如何实现?
(在我扭曲的心中,应该和
一样 foreach (extract( $o99_option ) as $single_var ){
do_something($single_var);
}
)
编辑I:那么,有没有办法对所有提取的元素执行操作? (假设我需要提取它们。)或者我应该在提取之前总是这样做(例如在array_map()的帮助下) - 或者,我是否应该像这里的人建议忘记那些曾经存在的提取从未使用过它..
编辑II:
当然,像这里的许多人说的那样,我也可以做到
$first_var = $o99_option['first-var']; $my_second_var = $o99_option['my_second_var']; $enigma = $o99_option[enigma]; $answer = $o99_option['answer'];
但
1)100多个变量看起来有点荒谬,并且 2)如何处理我需要使用其值作为名称的那些?
现在,例如,我使用
${$title_field} = $formdata[$post_title_field];
我知道$ title_field作为$ o99_option ['title_field']存在,因此在提取后作为变量存在。
同样,我可能会接近这一切都错了,但到目前为止,脚本运行良好,实际上,@ Mark Baker的第一个评论(使用array_map()
)可能是提取前的最佳选择。
答案 0 :(得分:2)
您不能提取变量,您需要将它们保存在$o99_option
数组中,否则无法确定元素的数量。
foreach ($o99_option as $variable) {
// Do something with the variable
}
答案 1 :(得分:1)
想象一下,你坐在其中一个孩子的球坑里。这是你的变量范围。在此范围内,您有各种各样的变量。现在你拿到了一个装满了更多彩球的盒子。那些球是重要的球,它们比你周围的所有其他球更有趣。
你在extract
做的事情是你把盒子颠倒过来,将所有球倒入球坑,并将它们与其他球混合在一起。而且你甚至都不知道那个盒子里到底是什么球,但你还是把盒子倒空了。好吧,祝你好好再找到那些球,并用它们做任何事情。
把球放在盒子里!当它们在盒子里时,你可以逐个检查它们。你可以依次看每一个并用它做点什么。你可以把它们放在那个盒子里面。不要extract
!
如果你知道你在那个盒子里寻找什么:
echo $o99_option['first-var'];
简单。只需直接拿球即可随意做任何事情 如果你想检查特定的球是否在盒子里:
if (isset($o99_option['first-var']))
如果你想浏览所有球并对每个球做些什么:
foreach ($o99_option as $name => $ball) {
echo "$name: $ball";
}
答案 2 :(得分:0)
如果你想对所有变量做点什么:
foreach ($o99_option as &$variable) {
$variable = strtoupper($variable); //for example
}
然后你应该单独使用每个元素。 Don't extract.