如何在javascript中放置另一个json数据

如何在javascript中放置另一个json数据,javascript,php,arrays,json,laravel-blade,Javascript,Php,Arrays,Json,Laravel Blade,我正在构建laravelblade php文件。 我需要为日历计划生成json数据。 但我不能将每个数据都放到json中。 这一结果是所有相同的记录 代码如下所示… @foreach($room_rates as $key=>$room_rate) var roomRate_object = { id: "{{$room_rate->sup_hotel_room_rates_list_id}}", roomRate_name: "{{

我正在构建laravelblade php文件。 我需要为日历计划生成json数据。 但我不能将每个数据都放到json中。 这一结果是所有相同的记录

代码如下所示…

@foreach($room_rates as $key=>$room_rate)
  var roomRate_object = {
    id: "{{$room_rate->sup_hotel_room_rates_list_id}}",
    roomRate_name: "{{$room_rate->room->room_name}}",
    roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
    roomRate_type: "2",
    roomRate_value: "3",
    start: "{{$room_rate->from_date}}",
    end: "{{$room_rate->to_date}}",
    status: "{{$room_rate->status}}",
    allotmant: "{{1}}",
    night_stayval: "{{$room_rate->min_night_stay}}",
  };
  console.log("kkk roomRate_object")
  console.log(roomRate_object)
  
  roomRate_object.id = roomRate_object.id + "1";
  roomRate_object.roomRate_type = "1";
  roomRate_object.roomRate_value = "{{$room_rate->adult_rate}}";
  realize_schedule.push(roomRate_object);

  roomRate_object.id = roomRate_object.id + "2";
  roomRate_object.roomRate_type = "2";
  roomRate_object.roomRate_value = "{{$room_rate->double_rate}}";
  realize_schedule.push(roomRate_object);

  roomRate_object.id = roomRate_object.id + "3";
  roomRate_object.roomRate_type = "3";
  roomRate_object.roomRate_value = "{{$room_rate->triple_rate}}";
  realize_schedule.push(roomRate_object);

  roomRate_object.id = roomRate_object.id + "4";
  roomRate_object.roomRate_type = "4";
  roomRate_object.roomRate_value = "{{$room_rate->quad_rate}}";
  realize_schedule.push(roomRate_object);

  roomRate_object.id = roomRate_object.id + "5";
  roomRate_object.roomRate_type = "5";
  roomRate_object.roomRate_value = "{{$room_rate->child_rate}}";
  realize_schedule.push(roomRate_object);
@endforeach
结果如下。

这很奇怪。 请帮帮我

我对此非常担心。
谢谢您的时间。

我想您对更改参考资料有点困惑。在javascript中,当创建对象时,如果尝试修改对象的值,则会更改内存中的值。范例

var obj = {name:'test'};
var b = obj;
b.name = 'test2';
如果您控制台输出,那么obj和b都将有test2,因为javascript将更改内存中的值,因为在varb=obj行上,它只是使b指向obj使用的相同内存

为了摆脱这种技术,我们根据需要使用深度克隆或浅层克隆

您有很多选择,其中一个可以是您只需创建多个具有不同名称的对象

用于制作新对象

function getObj($room_rate,id,type,value){
  return {
   id: "{{$room_rate->sup_hotel_room_rates_list_id}}"+ id,
   roomRate_name: "{{$room_rate->room->room_name}}",
   roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
   roomRate_type: type,
   roomRate_value: value,
   start: "{{$room_rate->from_date}}",
   end: "{{$room_rate->to_date}}",
   status: "{{$room_rate->status}}",
   allotmant: "{{1}}",
   night_stayval: "{{$room_rate->min_night_stay}}",
 }
}
创建如上所述的函数

就这样说吧

realize_schedule.push(getObj($room_rate,"1","{{$room_rate->adult_rate}}"));

上面这段代码只是一个示例,只是为了说明如何解决问题,您必须使用每个对象来解决这个问题

var roomRate_object = {
    id: "{{$room_rate->sup_hotel_room_rates_list_id.'1'}}",
    roomRate_name: "{{$room_rate->room->room_name}}",
    roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
    roomRate_type: "1",
    roomRate_value: "{{$room_rate->adult_rate}}",
    start: "{{$room_rate->from_date}}",
    end: "{{$room_rate->to_date}}",
    status: "{{$room_rate->status}}",
    allotmant: "{{1}}",
    night_stayval: "{{$room_rate->min_night_stay}}",
  };
realize_schedule.push(roomRate_object);

var roomRate_object = {
    id: "{{$room_rate->sup_hotel_room_rates_list_id.'2'}}",
    roomRate_name: "{{$room_rate->room->room_name}}",
    roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
    roomRate_type: "2",
    roomRate_value: "{{$room_rate->double_rate}}",
    start: "{{$room_rate->from_date}}",
    end: "{{$room_rate->to_date}}",
    status: "{{$room_rate->status}}",
    allotmant: "{{1}}",
    night_stayval: "{{$room_rate->min_night_stay}}",
  };
realize_schedule.push(roomRate_object);

var roomRate_object = {
    id: "{{$room_rate->sup_hotel_room_rates_list_id.'3'}}",
    roomRate_name: "{{$room_rate->room->room_name}}",
    roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
    roomRate_type: "3",
    roomRate_value: "{{$room_rate->triple_rate}}",
    start: "{{$room_rate->from_date}}",
    end: "{{$room_rate->to_date}}",
    status: "{{$room_rate->status}}",
    allotmant: "{{1}}",
    night_stayval: "{{$room_rate->min_night_stay}}",
  };
realize_schedule.push(roomRate_object);

必须使用另一个对象将另一个数据放入json。 所以一定要做下面的代码。 我为你做的

@foreach($room_rates as $key=>$room_rate)
  @for ($i = 1; $i <= 5; $i++)
    var roomRate_object = {
    id: "{{$room_rate->sup_hotel_room_rates_list_id}}",
    roomRate_name: "{{$room_rate->room->room_name}}",
    roomRate_nameCode: "{{$room_rate->sup_room_details_id}}",
    roomRate_type: "{{$i}}",
    roomRate_value: "3",
    start: "{{$room_rate->from_date}}",
    end: "{{$room_rate->to_date}}",
    status: "{{$room_rate->status}}",
    allotmant: "{{1}}",
    night_stayval: "{{$room_rate->min_night_stay}}",
  };

  @switch($i)
    @case(1)
        roomRate_object.roomRate_value = "{{$room_rate->adult_rate}}";
        @break

    @case(2)
        roomRate_object.roomRate_value = "{{$room_rate->double_rate}}";
        @break

    @case(3)
        roomRate_object.roomRate_value = "{{$room_rate->triple_rate}}";
        @break

    @case(4)
        roomRate_object.roomRate_value = "{{$room_rate->quad_rate}}";
        @break

    @case(5)
        roomRate_object.roomRate_value = "{{$room_rate->child_rate}}";
        @break

    @default
        <span>Something went wrong, please try again</span>
  @endswitch

  realize_schedule.push(roomRate_object);
  @endfor
  console.log("kkk roomRate_object")
  console.log(roomRate_object)
  
@endforeach
@foreach($key=>$room\u rate)

@为了($i=1;$i请修复您的代码示例,它缺少foreach start.Yes。抱歉。我将修复。您正在重复将同一对象推送到数组中。每当您更改原始对象时,数组中对该对象的所有引用都将更改。相反,每次声明不同的对象。更好的是,您可以让PHP生成此数据没有这些重复的东西。你可以引用它。来源是我可以在Laravel上使用它?所以我必须制作每个json对象?编辑引用$room_rate的答案在foreach中是可变的。所以它可以在这个函数中使用?是的,根据语言,你可以将任何东西传递给函数,无论它是否在函数中。a这取决于正确的语法。我已经在javascript的基础上给了你答案,但是对于将变量传递给函数,可能需要一个不同的PHP语法,但是我不确定,所以没有好的方法吗?无论如何,是的。你应该使用另一个对象。谢谢。我认为这很好。这很好。你好。可以吗我用一个对象来代替它?我的意思是,如果不将变量重新定义为roomRate_objectNo,你应该重新定义它。因为它是对象的地址。谢谢。我需要你的帮助。你有日历计划js方面的经验吗?