繁体   English   中英

如何从Javascript准备/构建多维数组以发送到PHP

[英]How to prepare / build Multidimensional Array from Javascript to send to PHP

我必须在PHP中从Ajax / Javascript接收如下数组:

$search = $_POST['query'];
$search = array(
    'category1' => array('include' => array(93, 52),'exclude' => array(72)),
    'category2' => array('include' => array(93, 52)),
    'category3' => array('exclude' => array(72)),
    'category4' => array()
);

在我的JavaScript页面中,该数组是在发送之前由用户操作构建的。 用户选择类别和项目来构建它。

例如,我的最终javascript数组必须如下所示:

my_array = '{
        "category1":{
            "include":["93","52"],
            "exclude":["72"]
        },
        "category2":{
            "include":["93","52"]
        },
        "category3":{
            "exclude":["72"]
        },
        "category4":[]
        }';

我尝试了许多query.push,但是当选择了许多类别时它不起作用。

我无法:

  • 当我的全局数组中已经存在某个类别时,在新类别中添加项目
  • 因为标识符是变量,所以从指定类别中删除特定项目:

(例如:在“ category2”:{“ include”:[“ 93”,“ 52”]}中删除'52',

描述:

  • 可以将类别项目ID放在指定类别的“包括”部分或“排除”部分中(但不能同时放在两者中)

  • 类别下的项目(标签)可以具有3个状态(类):

    • btn-default:未选择项目,必须删除指定数组的项目ID
    • btn-danger:项目被排除,项目ID必须出现在指定数组的“排除”列表中
    • btn-primary:包含intem,项目ID必须存在于指定数组的“ include”列表中

这是jsfiddle链接: JSFIDDLE

谢谢。

在Javascript中,这是一个数组: [] ,这是一个对象: {} 所以这就是我要在JS中创建数组的方式:

var my_array = [
  {'category1':{'include':[1,2,3], 'exclude':[5]}},
  {'category2':{'include':[3,4,5], 'exclude':[6,7,8]}},
  {'category3':{'include':[1,2], 'exclude':[7]}}
  ];

这是演示如何将新值推入数组的小提琴: https : //jsfiddle.net/h15emr8j/

如果要将值推入数组的特定部分,请按以下步骤操作:

my_array[0].category1.exclude.push(100);

您可以按照以下逻辑来实现所需的目标:

var my_array={}; // creating empty array object

my_array.category1={}; // creating new filed in my_array

var include1 = new Array(); //creating include array for category 1
include1.push("93"); // push include values
include1.push("52");

var exclude1 = new Array(); // creating exclude array for category1, if you want
exclude1.push("72"); // push exclude values


my_array.category1.include=include1; // finally add it to category1
my_array.category1.exclude=exclude1;

alert(JSON.stringify(my_array)); // convert your object to JSON string

现在,如果要添加新值以包括排除 category1 ,则只需要将这些值推入它们各自的数组中即可。

最简单的解决方案可能是这样的。

const jsonArray = [{
  category: {
    include: ["93", "52"],
    exclude: ["72"]
  }
  ..
}];

JS代码

my_array = {"category1": {"include": ["93", "52"], "exclude": ["72"]}, "category2": {"include": ["93", "52"]}, "category3": {"exclude": ["72"]}, "category4":[]};
console.log(my_array);
$.post("array.php", {query: my_array}, function( data ) {
    console.log(data);
}, "text");

PHP代码

<?php
    $search = $_POST['query'];
    print_r($search["category1"]["exclude"]);

因此,这里有一些好东西要学习。 在javasript中初始化数组:

var arr = ['include','exclude']; 
arr['include'] = []; 
arr['exclude'] = []; 

接下来,我们需要使用ajax将数组发送到php脚本:

var jsonString = JSON.stringify(arr);

$.ajax({
url: 'myscript.php',
type: 'POST',
data:{
      arr: jsonString
     },
success: function(result){
//continue with results
},
error: function(result){
//continue with results
}
});

最后在php端:

$arr = json_decode($_POST['arr']);

//code to execute

echo json_encode($arr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM