【问题标题】:Loop Array to Modify Values (JavaScript to PHP and Back to JavaScript)循环数组以修改值(JavaScript 到 PHP 并返回到 JavaScript)
【发布时间】:2017-05-07 15:45:16
【问题描述】:

我正在使用数组来处理 JavaScript 和 PHP,第一步是在这里创建数组

var ListaA=[];
var i = 0, len = options.length;
while (i < len){
            var tmp = {
                        'proyecto':'test',
                        'pendientes1':0,
                        'pendientes2':0,
                        'terminadas1':0,
                        'terminadas2':0,
                        'solucion':0
                };
                ListaA.push(tmp);
                i++;
            }

然后我像这样将它发送到我的 PHP 文件中

var laLista = JSON.stringify(ListaA);

$.get("php/operation.php?test="+ {'test' : laLista }, function( data ){
                var tmp = {
                        'proyecto':""+value['proyecto']+"",
                        'pendientes1':""+value['pendientes1']+"",
                        'pendientes2':""+value['pendientes2']+"",
                        'terminadas1':""+value['terminadas1']+"",
                        'terminadas2':""+value['terminadas2']+"",
                        'solucion':""+value['solucion']+""
                    };
                    ListaA.push(tmp);
            });

正如你在上面看到的,我已经准备好代码来获取代表 PHP 文件发送的数组的数据,所以我已经涵盖了这部分,我的问题在我的 PHP 文件中,在这里。

$arrayWork = json_decode($_POST['test']);

然后我想循环,这一次,只是为了测试,我只是取其中一个值并增加它来观察结果,就像这样

foreach($arrayWork as $value){
     $value['pendientes1']++; // this is not working for me
}

我得到以下信息:“foreach 中提供的参数无效”。那么,我的代码有什么问题?哪个是循环并将其返回到我的 JavaScript 的正确方法?

希望您能帮我解决这个问题。感谢您的时间和关注,晚安。

【问题讨论】:

  • 在 php 代码 $arrayWork or $_POST['test'] 中它应该为空,因为在 javascript 中您使用的是 get 请求,而在 php 中您尝试从帖子中获取数据。

标签: javascript php arrays foreach


【解决方案1】:

使用此代码

$arrayWork = json_decode($_POST['test']);

您的 json 并没有真正转换成关联数组,请看下面

混合 json_decode (string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]])

关联 当为 TRUE 时,返回的对象将被转换为关联数组。

要将 json 对象转换为数组,只需将 true 添加到它的第二个参数

$arrayWork = json_decode($_POST['test'], true);**strong text**

增加数组中的索引值

foreach($arrayWork $key => as $value){
    $arrayWork['pendientes1']++;
}

已编辑。

由于您使用的是$_POST 方法,请将您的ajax 从$.get 更改为$.post

$.post("php/operation.php?test="+ {'test' : laLista }, function( data ){
      var result = JSON.parse(data); // parse json string into json object
       ...
    });

【讨论】:

  • 谢谢你的回答,我明白了,但是我的 PHP 文件中的循环语句怎么样?还是我必须对其进行修改以使其正常工作?
  • 太棒了,但你不明白我的意思,我在 PHP foreach($arrayWork as $value){...} 中循环的方式是正确的吗?还是我必须修改它?
  • 你在该行的目标是单独增加$value['pendientes1']++
  • 是的,只是为了测试foreach语句是否正常工作。
  • @Gutierrez 检查我更新的答案,我添加了增量
【解决方案2】:

如果你想阅读$_POST,你必须发出一个POST请求:

$.ajax({
  url:'php/operation.php',
  type:"POST",
  data: { test: ListaA },
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
    ...
  }
})

您不能使用$.post,因为您必须将contentType 设置为JSON。

重要提示:你不需要运行JSON.stringifyyourself,jQuery 会为你处理它——所以传递原始的ListaA 数组。

【讨论】:

  • 谢谢你的回答,我的foreach句子怎么样?这是正确的吗?或者我也必须修改它? foreach($arrayWork as $value){...}
猜你喜欢
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
相关资源
最近更新 更多