0

在 if 之后为大量变量赋值时,您知道更好的方法吗?

就我而言,它是这样的:

$akeType = array_key_exists('type',$handle);
$akeParent = array_key_exists('parent',$handle);
$akeUserName = array_key_exists('userName',$handle);
$akeUserId = array_key_exists('userId',$handle);
$akeCountryCode = array_key_exists('userId',$handle);

if ( $akeType && $akeParent && $akeUserName && $akeUserId & $akeCountryCode ) {
$listType   = $handle['type'];
$listParent = $handle['parent'];
$listUserName = $handle['userName'];
$listUserId = $handle['userId'];
$foo = $_POST['foo'];
$bar = $_POST['bar'];
$listCountryCode = $handle['countryCode']; // Is there a way to clean up this part? The assignments to variables.
4

3 回答 3

3

看看extract-- 从数组中导入变量到当前符号表

extract($handle, EXTR_OVERWRITE, "ake_");
于 2013-05-21T15:09:46.660 回答
0

您可以使用以下更晦涩的代码来执行此操作:

$keys= array('type','parent','userName', 'userId');
foreach($keys as $key) {
    $nametoset= "list".ucfirst($key);
    $$nametoset= $handle[$key];
}

$$nametoset指的是像字符串一样命名的变量$nametoset。类似的代码可用于$ake...变量。

于 2013-05-21T14:51:49.263 回答
0

您可以使用变量变量来设置变量列表

对于您的具体情况,您可以使用以下代码:

foreach ($handle as $key => $value) {
    $var_name = 'list'.$key;
    $$var_name = $value;
}

foreach ($_POST as $pkey => $pvalue) {
    $$pkey = $pvalue;
}

这些循环根据您的数组键创建变量。

于 2013-05-21T15:09:32.363 回答