在php中用字母和数字创建一个动态变量

时间:2017-06-21 21:49:14

标签: php wordpress

我有许多几乎完全相同的代码行,其中唯一不同的部分是变量名称的字母和数字以及相关的get_user_meta键。我想以更有效的方式动态创建变量。 (该模式将持续到Q25G。)

    $Q1A = get_user_meta( $user_id, 'key_Q1A', true );
    $Q1B = get_user_meta( $user_id, 'key_Q1B', true );
    $Q1C = get_user_meta( $user_id, 'key_Q1C', true );
    $Q1D = get_user_meta( $user_id, 'key_Q1D', true );
    $Q1E = get_user_meta( $user_id, 'key_Q1E', true );
    $Q1F = get_user_meta( $user_id, 'key_Q1F', true );
    $Q1G = get_user_meta( $user_id, 'key_Q1G', true );      

    $Q2A = get_user_meta( $user_id, 'key_Q2A', true );
    $Q2B = get_user_meta( $user_id, 'key_Q2B', true );
    $Q2C = get_user_meta( $user_id, 'key_Q2C', true );
    $Q2D = get_user_meta( $user_id, 'key_Q2D', true );
    $Q2E = get_user_meta( $user_id, 'key_Q2E', true );
    $Q2F = get_user_meta( $user_id, 'key_Q2F', true );
    $Q2G = get_user_meta( $user_id, 'key_Q2G', true );

如何动态设置这些变量,或以其他方式简化这种怪物?

2 个答案:

答案 0 :(得分:1)

最好使用数组

$Q = [];
$keys = ["1A", "1B", "1C", "2A"]; // as many as you need
foreach($keys as $key) {
  $Q[$key] = get_user_meta( $user_id, "key_Q$key", true );
}

有关您的用例的更多信息,我们可能会想出一种更优雅的方法来实现这一目标。

答案 1 :(得分:0)

你应该使用shalvah指出的关联数组。但是,在PHP中可以生成变量变量名。

在PHP中,您可以执行以下操作:

$index = 'Q1A';
$$index = get_user_meta($user_id, 'key_' . $index, true);

您可以将此代码放在while循环中,例如更改$index并查看所有选项。

但实际上,请使用关联数组。