如何在PHP中使用字符串调用数组

时间:2015-06-04 03:24:02

标签: php arrays echo

我想按数字顺序回显一堆数组,我尝试使用WHILE方法,但缺乏如何组合字符串来调用变量并获取数组内部值的知识。

0 18 * * * cp /etc/passwd /etc/passwd_$(date -I)

输出应该是:

$ins1 = array ( 
              "select"  => array (  
                                   "1" => "1"
                                   ), 
              "note"  => array ( 
                                   "1" => "Message"
                                   )
              ); 

$ins2 = array ( 
              "select"  => array (  
                                   "1" => "2"
                                   ), 
              "note"  => array ( 
                                   "1" => "Sorry"
                                   )
              ); 


$count = 1;
while($count <= 2){
    $ins = '$ins'.$count;
    echo $ins["select"][$count] .' '. $ins["note"][$count].'<br>';
    $count++;
}

3 个答案:

答案 0 :(得分:6)

您要找的是“Variable variables”,您可以通过它动态设置变量名称;为了得到你想要的东西,你可以改变你的代码:

$count = 1;
while($count <= 2){
    $ins = 'ins'.$count;
    $var = $$ins; // now your $var is either $ins1 or $ins2 :)
    echo $var["select"][1] .' '. $var["note"][1].'<br>';
    $count++;
}

输出结果为:

1 Message
2 Sorry

答案 1 :(得分:1)

你应该把这两个变量结合起来,让生活更轻松:

$ins = [
            [//$ins1
                "select"  => array ("1" => "1"), 
                "note"  => array ("1" => "Message" )
            ],
            [//$ins2
                "select" => array ("1" => "2"), 
                 "note"  => array ("1" => "Sorry")
            ]
        ]; 

for ($i = 0; $i < count($ins); $i++)
{
    echo $ins[$i]["select"][1]." ".$ins[$i]["note"][1]."<br/>";
}

关于变量的动态名称,请参阅其他答案..希望我帮助过你..干杯! ;)

答案 2 :(得分:0)

这将为您解决问题:

$ins1 = array ( 
              "select"  => array (  
                                   "1" => "1"
                                   ), 
              "note"  => array ( 
                                   "1" => "Message"
                                   )
              ); 

$ins2 = array ( 
              "select"  => array (  
                                   "1" => "2"
                                   ), 
              "note"  => array ( 
                                   "1" => "Sorry"
                                   )
              ); 


for($i=1; $i<1000; $i++) {

    $arr_name = 'ins'.$i;

    if(isset($$arr_name)) {

        $str = '';
        foreach ($$arr_name as $key => $value) {
            $str .= $value[1].' ';
        }
        echo trim($str).'<br/>';

    } else {
        break;
    }

}

注意:我已将1000作为最高可能值,您可以相应地更改。比如你的情况就是2.