提取后执行操作()

时间:2014-07-14 14:06:15

标签: php extract

我一直在寻找答案,但也许是因为我在搜索错误的术语或概念 - 我还没有找到关于如何对提取的参数执行操作的任何线索。

我有一个动态的数组(我无法预测有多少$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 Ba​​ker的第一个评论(使用array_map())可能是提取前的最佳选择。

3 个答案:

答案 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";
}

ball pit

答案 2 :(得分:0)

如果你想对所有变量做点什么:

foreach ($o99_option as &$variable) {
    $variable = strtoupper($variable); //for example
}

然后你应该单独使用每个元素。 Don't extract.