使用变量名可以更改另一个变量名的名称


Use a variable name to change the name of another variable name

我通过一个表单发布两个值:

$lang       = "fr"
$about_xx   = "hello, world!

现在我需要使用$lang变量的值将$about_xx的名称更改为$about_en。这可能吗?

编辑:添加代码以获得额外的清晰度和帮助。此实例中的变量$lang具有值"fr"。比较部分需要修改以支持我希望创建的这些新变量,而不是以_en结尾的变量

// Get POST Variables
$expo_id                       = $_POST['expo_id'];
$lang                          = $_POST['lang'];
${"new_expo_url_" . $lang}     = $_POST['expo_url_lang'];
${"new_expo_venue_" . $lang}   = $_POST['expo_venue_lang'];
${"new_expo_country_" . $lang} = $_POST['expo_country_lang'];
${"new_expo_about_" . $lang}   = $_POST['expo_about_lang'];
// Get Current Variables
$update_expo = mysql_query("SELECT expo_id, expo_url_{$lang}, expo_venue_{$lang}, expo_country_{$lang}, expo_about_{$lang} FROM exhibitions WHERE expo_id = $expo_id LIMIT 1") or die(mysql_error());
if (mysql_num_rows($update_expo) == 0) {
    header("Location: index.php?expo_id=" . $expo_id . "&i=no-expo");
    exit();
}
// Compare
$update_lang_append = "";
while ($ula = mysql_fetch_assoc($update_expo)) {
    if ($ula['expo_venue_en'] !== $new_expo_venue_en) {
        $update_lang_append .= "expo_venue_en = '" . $new_expo_venue_en . "', ";
    }
    if ($ula['expo_country_en'] !== $new_expo_country_en) {
        $update_lang_append .= "expo_country_en = '" . $new_expo_country_en . "', ";
    }
    if ($ula['expo_about_en'] !== $new_expo_about_en) {
        $update_lang_append .= "expo_about_en = '" . $new_expo_about_en . "', ";
    }
    if (($ula['expo_url_en'] !== $new_expo_url_en) && ($new_expo_url_en !== "")) {
        $update_lang_append .= "expo_url_en = '" . $new_expo_url_en . "', ";
    }
    if ($update_lang_append == "") {
        header("Location: exhibition-edit.php?expo_id=" . $expo_id . "&i=no-change");
        exit();
    }
    else {
        $update_query_append = substr($update_query_append, 0, -2);
        $update_query = mysql_query("UPDATE exhibitions SET " . $update_query_append . " WHERE expo_id = $expo_id") or die(mysql_error());
        header("Location: index.php?i=success");
        exit();
    }
}

有可能:

${"about_".$lang} = "hello, world!"

尽管如此,可变变量通常被认为是不好的做法(我的意思是,看看)。您应该为此使用数组。I.E:

$about = Array();
$about[$lang] = "hello, world";

OP编辑后

创建您的数组,如下所示:

$new_expo = Array();
$new_expo['url'][$lang]        = $_POST['expo_url_lang'];
$new_expo['venue'][$lang]      = $_POST['expo_venue_lang'];

以类似的方式调用您的密钥,例如:

$update_lang_append .= "expo_venue_en = '" . $new_expo['venue']['en'] . "', ";