簡體   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