在 foreach 中遍历 PHP 数组,并为每个$value一个新的变量名称

Looping through PHP array in foreach and give each $value a new variable name

提问人:Runner 提问时间:11/4/2013 最后编辑:Runner 更新时间:11/4/2013 访问量:3196

问:

我想拿一个数组,用 foreach 循环它,并通过一个类发送每个数组值以从数据库中获取数据。这是我目前正在使用的代码:

foreach ($unique_category as $key => $value) 
{
    $category = $value;
    $value = new database;
    $value->SetMysqli($mysqli);
    $value->SetCategory($category);
    $value->query_category();
    ${"$value_category"} = $value->multi_dim_array();
    print_r(${"$value_category"});
    echo "<br /><br />";            
}
print_r($unique_category[0]."_category");

我希望变量是 . 目前,foreach 循环中打印出正确的值/数组,而只打印person_category(person 是该数组中的第一个值)。$unique_category[0]."_category"${"$value_category"}${"$value_category"}$unique_category[0]."_category"

我将如何使印刷品与 ?$unique_category[0]."_category"${"$value_category"}

谢谢

编辑:

foreach 循环正在制作一个多维数组,看起来像这样 我希望能够在 foreach 循环之外打印出这个数组,每个 md 数组都有自己的变量名称,这样我就可以随时随地打印出来。Array ( [0] => Array ( [0] => Home [1] => 9.8 ) [1] => Array ( [0] => Penny [1] => 8.2 ))

PHP 数组 foreach variable-variables

评论

1赞 Johannes H. 11/4/2013
您实际上要打印哪个变量?$unique_category[0]。_category“不是变量,它是该数组的第一个元素的值和字符串”_category“的串联。你是说吗?${$unique_category[0].'_category'}
0赞 IMSoP 11/4/2013
一般来说,动态命名变量(就像你正在做的一样,可以更简洁地用 )是一个坏主意,也是代码结构不良的标志。通常,您实际应该使用的是关联数组,例如${"$value_category"}$$value_category$expanded_categories[$key] = $value->multi_dim_array()
0赞 Runner 11/4/2013
我已经编辑了问题以显示我想打印的内容。由于值在数组中,我希望能够打印出多维数组,其中 (person 是数组中的值),或者 ,与 相同。$person_category$unique_category[0]."_category"$person_category

答:

0赞 aretecode 11/4/2013 #1

无对象测试

<?php

    $unique_category_list = array('foo', 'bar', 'baz');
    foreach ($unique_category_list as $key => $value) 
    {
        $category = $value;
        $value_category = $value."_".$category; 
        $unique_category = $unique_category_list[$key]."_category";
        $unique_category = ${"$value_category"} = $key; 

        print_r($unique_category_list[$key]."_category");
        echo "\n\n";
    }

?>

输出:

foo_category

bar_category

baz_category

与对象

<?php 

    // note that $unique_category is now $unique_category_list && $value is now $category
    foreach ($unique_category_list as $key => $category) 
    {
        $database = new Database();
        $database->setMysqli($mysqli);
        $database->setCategory($category);
        $database->query_category();

        // http://www.php.net/manual/en/language.oop5.magic.php#object.tostring
        // this will invoke the `__toString()` of your $database object... 
        // ... unless you meant like this
        // $value_category = $category."_".$category;
        $value_category = $database."_".$category;
        $unique_category = $unique_category_list[$key]."_category";

        // http://stackoverflow.com/questions/2201335/dynamically-create-php-object-based-on-string
        // http://stackoverflow.com/questions/11422661/php-parser-braces-around-variables
        // http://php.net/manual/en/language.expressions.php
        // // http://php.net/manual/en/language.variables.variable.php
        // 'I want the variable $unique_category[0]."_category" to be ${"$value_category"}.'
        $unique_category = ${"$value_category"} = $database->multi_dim_array();          
    }

    print_r($unique_category_list[0]."_category");
    echo "<br><br>\n\n";

?>