【问题标题】:How to call an array using a string in PHP如何在 PHP 中使用字符串调用数组
【发布时间】:2015-06-04 03:24:02
【问题描述】:

我想以数字顺序回显一堆数组,我尝试使用 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

【问题讨论】:

  • 当前的输出是什么,你期望什么?
  • 所以你只想在select不为0的情况下输出note?选择消息顺序中的数字还是数字?
  • 使用 $$ins (double $$)
  • 为什么不将$ins1$ins2 合并到一个数组中?

标签: php arrays echo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      这将为您解决问题:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多