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


How to call an array using a string in PHP

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

$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++;
}

输出应该是:

1 Message
2 Sorry

你要找的是"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

您应该将这两个变量组合在一起,以使工作更轻松:

$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/>";
}

为变量的动态名称,参见其他答案。希望我对你有所帮助。干杯!div;)

这将为您做的伎俩:

$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。