【问题标题】:Representing php associative array equivalent to javascript array表示相当于javascript数组的php关联数组
【发布时间】:2012-09-29 21:19:07
【问题描述】:

给定 PHP 数组:

$forColumnsArr['p_pl'] = array('datatype_names' => array('publisher', 'placement', 'placement_groups'), 'labels' => 'All Placements');
$forColumnsArr['a_st'] = array('datatype_names' => array('advertiser', 'campaign', 'strategy'), 'labels' => 'All Campaigns, All Strategies');

想要相似/等效的 javascript 数组

请帮帮我

【问题讨论】:

标签: php javascript logic business-logic


【解决方案1】:

表示为对象:

var forColumnsArr = {
     p_pl : {
         datatype_names : { 
            0: 'publisher',
            1: 'placement',
            2: 'placement_groups'
         },
         labels : 'All Placements'
     },
     a_st : {
         datatype_names : { 
            0: 'advertiser',
            1: 'campaign',
            2: 'strategy'
         },
         labels : 'All Campaigns, All Strategies'
     }
}

// console.log(forColumnsArr.p_pl.datatype_names[0]); // publisher
// console.log(forColumnsArr.p_pl.datatype_names[1]); // placement
// console.log(forColumnsArr.p_pl.datatype_names[2]); // placement_groups

【讨论】:

    【解决方案2】:

    我个人更喜欢使用JS objects,您可以参考米海的答案。不过,既然你要的是数组,那就来吧,

     var forColumnsArr['p_pl'] = new Array();
     forColumnsArr['p_pl']['datatype_names'][0] = 'publisher';
     forColumnsArr['p_pl']['datatype_names'][1] = 'placement'; 
     forColumnsArr['p_pl']['datatype_names'][2] = 'placement_groups';
     forColumnsArr['p_pl']['labels'] = 'All Placements';
    

    同样,对于forColumnsArr['a_st'],这里是manual

    【讨论】:

    • @Baba:它是有效的 JS,虽然不工作(缺少对象)并且太像 PHP。对象/数组字面量会更好。
    【解决方案3】:

    您可以使用 json_encode 从 PHP 生成 JavaScript 数组

    【讨论】:

      【解决方案4】:

      不要使用数组,使用对象。 (好吧,JS中的数组是一个对象,但现在不要去那里。)

      $forColumnsArr['p_pl'] = array('datatype_names' => array('publisher', 'placement', 'placement_groups'), 'labels' => 'All Placements');
      
      var forColumnsArr = {
      'datatype_names': ['publisher', 'placement', 'placement_groups'],
      'labels' : 'All Placements'
      };
      

      这称为“对象文字表示法”。

      还可以查找 JSON,它可以节省大量时间。

      【讨论】:

        【解决方案5】:
        var forColumnsArr = {
            p_pl: {
                datatype_names: {
                     0:'publisher',
                        1: 'placement', 
                        2: 'placement_groups'
        
                },
                labels: 'All Placements'
            },
            a_st: {
                datatype_names: {
                        0: 'advertiser', 
                        1: 'campaign', 
                        2: 'strategy'
                },
                labels: 'All Campaigns, All Strategies'
            }
        };
        

        【讨论】:

          【解决方案6】:

          使用对象和数组文字:

          var forColumnsArr = {
               p_pl: {
                   datatype_names : [
                        'publisher',
                        'placement',
                        'placement_groups'
                   ],
                   labels : 'All Placements'
              },
              a_st: {
                   datatype_names: [
                       'advertiser',
                       'campaign',
                       'strategy'
                   ],
                   labels: 'All Campaigns, All Strategies'
              }
          };
          

          Accessing the properties 这些对象的工作方式与 PHP 中的一样,使用括号或点表示法。

          您可以通过在 PHP 对象上调用 json_encode function 轻松生成此 JSON 标记。

          【讨论】:

            【解决方案7】:
            var object = {
                'datatype_names' : {
                    'publisher':'Value', 
                    'placement':'Value', 
                    'placement_groups':'Value'
                },
                'labels' : 'All Placements'
            }
            
            console.log(object);
            

            【讨论】:

              【解决方案8】:
              var p_pl = {
                datatype_names: ['publisher', 'placement', 'placement_groups'],
                labels: 'All Placements'
              };
              
              var a_st = {
                datatype_names: ['advertiser', 'campaign', 'strategy'],
                labels: 'All Campaigns, All Strategies'
              };
              

              从 php 分配它们

              <?php 
              $p_pl = json_encode($forColumnsArr['p_pl']);
              $a_st = json_encode($forColumnsArr['a_st']);
              ?>
              var p_pl = eval('(' + '<?php echo $p_pl; ?>' + ')');
              var a_st = eval('(' + '<?php echo $a_st; ?>' + ')');
              

              【讨论】:

                猜你喜欢
                • 2012-03-31
                • 1970-01-01
                • 1970-01-01
                • 2013-08-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-10-22
                • 1970-01-01
                相关资源
                最近更新 更多