$choices = array($_POST['choices']);
并且在使用var_dump()时输出:
array(1) { [0]=> string(5) "apple,pear,banana" }
我需要的是变为变量的值以及作为字符串添加值。 所以,我需要输出:
$apple = "apple";
$pear = "pear";
$banana = "banana";
数组的值可能会发生变化,因此必须根据该数组中的内容创建变量。
我将非常感谢所有的帮助。干杯
标记
答案 0 :(得分:4)
怎么样
$choices = explode(',', $_POST['choices']);
foreach ($choices as $choice){
$$choice = $choice;
}
答案 1 :(得分:1)
$str = "apple,pear,pineapple";
$strArr = explode(',' , $str);
foreach ($strArr as $val) {
$$val = $val;
}
var_dump($apple);
这将满足您的要求。但是,问题就出现了,因为你无法预定义有多少变量,它们是什么,你很难正确使用它们。在使用$ VAR之前测试“isset($ VAR)”似乎是唯一安全的方法。
您最好只将源字符串拆分为一个数组,然后只运行特定数组的元素。
答案 2 :(得分:1)
我必须同意所有其他答案,这是一个非常糟糕的主意,但每个现有的答案都使用了一种稍微迂回的方法来实现它。
PHP提供了一个函数extract,用于将数组中的变量提取到当前作用域中。您可以在这种情况下使用它(如使用explode和array_combine将输入转换为关联数组):
$choices = $_POST['choices'] ?: ""; // The ?: "" makes this safe even if there's no input
$choiceArr = explode(',', $choices); // Break the string down to a simple array
$choiceAssoc = array_combine($choiceArr, $choiceArr); // Then convert that to an associative array, with the keys being the same as the values
extract($choiceAssoc, EXTR_SKIP); // Extract the variables to the current scope - using EXTR_SKIP tells the function *not* to overwrite any variables that already exist, as a security measure
echo $banana; // You now have direct access to those variables
有关为什么这是一个糟糕的方法的更多信息,请参阅有关现已弃用的register_globals设置的讨论。简而言之,它使编写不安全的代码变得更容易,更容易。
答案 3 :(得分:0)
在PHP的其他语言中经常被称为“分裂”,你需要使用explode。
编辑:实际上,你想要做的事听起来......危险。这是可能的(并且是PHP的旧“功能”),但它强烈反对。我建议只是爆炸它们并使它们的值成为关联数组的键:
$choices_assoc = explode(',', $_POST['choices']);
foreach ($choices as $choice) {
$choices_assoc[$choice] = $choice;
}