Php循环创建变量

时间:2015-10-14 18:32:09

标签: php loops variables

我有一个我需要创建的变量列表:

$meta_2_length = get_post_meta( get_the_ID(), 'meta-2-length', true );
$meta_2_loft = get_post_meta( get_the_ID(), 'meta-2-loft', true );
$meta_2_lie = get_post_meta( get_the_ID(), 'meta-2-lie', true );
$meta_2_bounce = get_post_meta( get_the_ID(), 'meta-2-bounce', true );

我需要为数字2 - 14制作这些,所以我认为最好的方法是循环。我是php的新手但想尽可能写得干净。我认为这可能有用:

for($i = 0; $i <= 14; $i++) {
   ${"meta_$i_length"} = "get_post_meta( get_the_ID(), 'meta-$i-length', true );";
}

但是当我echo $meta_3_length

时它似乎无法正常工作

4 个答案:

答案 0 :(得分:0)

我建议您创建一个数组。并在循环中给出数组值。

例如

$foo = array();    
for($i = 0; $i <= 14; $i++) {
   $foo[] = "get_post_meta( get_the_ID(), 'meta-$i-length', true );";
}

然后使用数组

回显数据

答案 1 :(得分:0)

您可以使用variable variables

for($i = 0; $i <= 14; $i++) {
   $varname = "meta_$i_length";
   $$varname = get_post_meta( get_the_ID(), 'meta-$i-length', true );
}

答案 2 :(得分:0)

使用一组关联数组。

$metas = array();
$id = get_the_ID();
for ($i = 0; $i <= 14; $i++) {
    $metas[] = array(
        'length' => get_post_meta($id, "meta-$i-length", true),
        'loft' => get_post_meta($id, "meta-$i-loft", true),
        'lie' => get_post_meta($id, "meta-$i-lie", true),
        'bounce' => get_post_meta($id, "meta-$i-bounce", true)
    );
}

现在你可以echo $metas[3]['length'];

答案 3 :(得分:0)

您可以将extract与关联数组一起使用:

$arr = [];
for($i = 0; $i <= 14; $i++) {
    $arr["meta_{$i}__length"] = get_post_meta( get_the_ID(), "meta-{$i}-length", true);
}
extract($arr);

然后,您可以执行echo $meta_3__length并获取函数调用的结果get_post_meta( get_the_ID(), "meta-3-length', true);

我希望它有所帮助