如何在转换为 JSON 之前向数组添加新键和值?

How do I add new keys and value to an array before converting to JSON?

在将数组转换为 json 之前,如何在每个循环中向我的数组添加额外的键和值?

我正在尝试添加一个额外的键和值以容纳 'Edit' 和“删除”按钮,然后再在 JS 数据表上进行转换。

我的示例电流数组

$结果:

array:97 [
 0 => {#1
  +"username": "azura"
  +"gem": "emerald"
  +"color": null
 }

 1 => {#2
  +"username": "azuren"
  +"gem": "ruby"
  +"color": "red"
 }
...]

添加后我期望的数组。我想注入一个由字符串组成的按钮。

 0 => {#1
  +"username": "azura"
  +"gem": "emerald"
  +"color": null
  +"action": "<button id="edit" class="edit-btn></button>
              <button id="remove" class="delete-btn">Delete</button>"
 }

 1 => {#2
  +"username": "anngeetan"
  +"gem": "ruby"
  +"color": "red"
  +"action": "<button id="edit" class="edit-btn></button>
              <button id="remove" class="delete-btn">Delete</button>"
 }
...]

然后在我的 larvel php 上,我会将其转换为 DataTables Json 以将新的 'action' 项目容纳到我的 js

我的js

$('#mytable').DataTable({
 columns: [
     'data': 'azuren',
     'data': 'gem',
     'data': 'color',
     'data': 'action',
 ]
}):

我的 php 控制器

public function get_table(Request $request)
{
    $table = $request['selected-table'];
    $results = DB::select("SELECT * from $table");
    
    //add the 'action' item somewhere here.

    return datatables($results)->make(true);
}

PS:如果有更好的方法或者优化不好,欢迎提出新方法(我也有一个有20,000个条目的数组)。

你可以这样做

https://yajrabox.com/docs/laravel-datatables/master/add-column

$table = $request['selected-table'];
$results = DB::select("SELECT * from $table");

 return datatables($results)
     ->addColumn('action', function ($row) { // added action key 
          return "<button id='edit' class='edit-btn'></button>
                 <button id='remove' class='delete-btn'>Delete</button>";
     })->make(true);