如何使用 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

这将为您解决问题:

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

你要找的是“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/>";
}

有关变量的动态名称,请参阅其他答案..希望我对您有所帮助..干杯! ;)