当源代码为 PHP 时更改 JavaScript 数组的格式



我目前正在研究 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;
}

最新更新