【问题标题】:how to set dynamic arrray names in php如何在php中设置动态数组名称
【发布时间】:2011-10-12 06:03:42
【问题描述】:

嗨,我正在尝试使用动态数组名称。但是当我运行此代码时,我收到错误 $marker is undefined

 if (isset($arr)) {
               foreach ($arr as $key => $value) {

                  $marker.$key = array();

                   $marker.$key ['position'] = $value['lat'] . ',' . $value['long'];
                   $marker.$key ['draggable'] = 'TRUE';
                   $marker.$key ['ondragend'] = "test(this.getPosition().lat(),this.getPosition().lng())";

                   $this->ci->googlemaps->add_marker($marker.$key);
                   $i++;
                  }

           }

如何创建动态数组名????

【问题讨论】:

  • 你做错了!!试试$marker[$key]
  • $marker 和 $key 的值是多少?

标签: php arrays codeigniter dynamic-data


【解决方案1】:

阅读精美手册。 PHP 中的点运算符与 Javascript 和类似语言中的点运算符完全无关——它进行字符串连接。我不太明白你要做什么,但我很确定不是字符串连接。

澄清一下,这是做什么的:

$marker.$key ['draggable'] = 'TRUE';

……这是吗;

  • 获取$marker中的值,解释为字符串
  • 获取$key中的值,解释为字符串
  • 连接$marker$string
  • 将生成的字符串解释为数组,并将“可拖动”处的元素设置为字符串 (!)“TRUE”。我什至不确定这是做什么的 - 字符串确实允许数组样式索引(它引用单个字符),但我不知道非整数索引会产生什么。

【讨论】:

    【解决方案2】:

    试试这个,当你进行连接时,PHP 只看到 $key 是一个数组,并以错误的方式连接。无论如何,$marker 是在哪里定义的??

    if (isset($arr)) {
                   foreach ($arr as $key => $value) {
                      $myarray = $marker.$key;
                      $myarray = array();
    
                       $myarray['position'] = $value['lat'] . ',' . $value['long'];
                       $myarray['draggable'] = 'TRUE';
                       $myarray['ondragend'] = "test(this.getPosition().lat(),this.getPosition().lng())";
    
                       $this->ci->googlemaps->add_marker($myarray);
                       $i++;
                      }
               }
    

    【讨论】:

    • 应该在某个地方使用$$ 以获得预期的效果。
    【解决方案3】:

    Php中的动态数组名可以这样完成

    foreach($arr as $key => $value) {
    $myarray[$key] = $value;
    }
    

    不过,你也可以这样做,设置数组变量

    foreach($arr as $key => $value) {
    ${$key}[$key] = $value;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 2023-03-16
      • 1970-01-01
      • 2018-05-22
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多