首页 > 解决方案 > 如何将此字符串转换为数组?

问题描述

我正在尝试将我在 JS 中创建的这个数组转换为然后在我的控制器中使用以在 foreach 中使用并使用数组的数据。我正在使用框架codeigniter。

在这里,我在我的 JS 文件中创建数组。

function get_array(){
  var datos = []; // Array
  $("#tbl_esctructura tbody > tr").each(function() {

    var item = $(this).find('td:eq(1)').text();
    var cantidad = $(this).find('td:eq(4)').text();

    datos.push({
       "item": item,
       "cantidad": cantidad
    });
  });

  datos =  JSON.stringify(datos); 
  $.ajax({
        data: {
            'datos': datos
        },
        url: "<?php echo base_url() ?>Controller/data_from_array",
        type: 'POST',
        dataType : "json",
        success: function(response) {

        }
    });
}

我发送给控制器的数据如下所示。 [{"item":"1","cantidad":"2"},{"item":"2","cantidad":"4"}]

现在我的控制器 PHP

public function data_from_array(){
   $data   =  $this->input->post('datos', TRUE);
   $items = explode(',', $data);
   var_dump($items);
   foreach ($items as $row) {
       echo  $row->item.'<br>';
   }
}

var_dump($items)就是结果

array(2) { [0]=> string(12) "[{"item":"1"" [1]=> string(16) ""cantidad":"1"}]" } }

在这个回声中,我得到了这个错误Message: Trying to get property 'item' of non-object

而且我不知道我做错了什么

标签: javascriptphpcodeigniter

解决方案


看起来像一个标准的 JSON。请务必将 true 添加到 json_decode 函数(第二个参数)以返回数组而不是对象。

$result = json_decode($data, true); 

看看 JSON,因为这是当今 Web 和移动应用程序的数据交换标准,并了解有关该功能的更多信息:

https://www.php.net/manual/en/function.json-decode.php

另请查看将您的数组编码为 JSON 格式的对应项:

https://www.php.net/manual/en/function.json-encode.php


推荐阅读