繁体   English   中英

当源是PHP时更改JavaScript数组的格式

[英]Change the format of JavaScript array when source is PHP

我目前正在研究laravel,我的项目要求我对下拉菜单使用自动完成功能。

但是,对象从以下返回

$companies = Companies::all()->pluck('company_name','id')->toArray();

并使用以下内容转换为js数组

var companies = <?php echo json_encode($companies) ?>;

返回数组的以下格式

{ 2: "Jadon Technology", 
    58: "Samsung",
    59: "Sony",
    60: "Sujan",
    61: "Superman", 
    68: "Vivo", 
    84: "Iphone", 
    85: "Oppo", 
  }

我想要下面给出的数组。

var companies = [
    { id: 2, value: "Jadon Technology"} , 
    { id: 58, value: "Samsung"} ,
    { id: 59, value: "Sony"} ,
    { id: 60, value: "Sujan"} ,
    { id: 61, value: "Superman"} , 
    { id: 68, value: "Vivo"} , 
    { id: 84, value: "Iphone"} , 
    { id: 85, value: "Oppo"} , 
  ];

我是在做错什么,还是有其他方法可以转换成上述格式? 请有人帮我。 欢迎包括php / laravel / javascript在内的建议。 PS:没有foreach循环,因为我必须在同一项目的许多地方实现相同的功能。

pluck函数以这种方式格式化数据,第一个参数是值键,第二个参数是键值。 如果需要键值对,则应使用select

$companies = Companies::select('company_name', 'id')->get()->toArray();

为什么不实现一个函数来完成工作,然后在json_encode之前调用该函数:

   function convert($arr) { 
       $tmp = array();
       foreach ($arr as $k => $v) {
          $tmp[] = array("id" => $k, "value" => $v)
       }
       return $tmp;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM