Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将多维数组解析为PHP_Javascript_Php_Arrays_Parsing_Multidimensional Array - Fatal编程技术网

Javascript 如何将多维数组解析为PHP

Javascript 如何将多维数组解析为PHP,javascript,php,arrays,parsing,multidimensional-array,Javascript,Php,Arrays,Parsing,Multidimensional Array,我正在尝试将多维数组发布到php,但我没有运气。 我的数组是用Javascript创建的,其中包含数组/对象,每个数组中都有一个关联的值,比如done 在该功能中: function mouseUp(e) { startX = 0; startY = 0; endX = e.pageX - this.offsetLeft; endY = e.pageY - this.offsetTop; width = 30; height = 30; f

我正在尝试将多维数组发布到php,但我没有运气。
我的数组是用Javascript创建的,其中包含数组/对象,每个数组中都有一个关联的值,比如done
在该功能中:

function mouseUp(e) {
    startX = 0;
    startY = 0;
    endX = e.pageX - this.offsetLeft;
    endY = e.pageY - this.offsetTop;
    width = 30;
    height = 30;
    filler = "#FFFFFF";
    filler = "#FFFF00";
    //send these vars over and push them into an array
    addRect(startX, startY, width, height, filler, border);
} //end on mouse up

function addRect(startx, starty, endX, endY, color1, bc) {

    newArray2 = [{
        x: startx,
        y: starty,
        x1: endX,
        y1: endY,
        color: color1,
        borderColor: bc
    }];
    arrayBig.push(newArray2);

    //console.log(arrayBig);
}
我使用此函数以输入值为目标,如下所示:

function send() {

    var elem = document.getElementById("rectangle");
    var myJSON = JSON.stringify(arrayBig);
    elem.value = myJSON;
}
我的html表单如下所示:

<form action="#" enctype="multipart/form-data" method="post" >
<input name="rectangle[][]" id="rectangle" type="hidden" class="valueFields" value=""/>
<input name="parseMe" type="hidden" value="layout" />
<input type="submit" name="button" id="submitButton" value="send" onclick="send()"/>
</form>

现在,我在这一部分中遇到了问题,在PHP中将数组值分配给vars如下:

<?php
if (isset($_POST['parseMe'])) {
    if ($_POST['parseMe'] == "layout") {
        print_r($_POST['rectangle']);
$myObj= json_decode($POST['rectangle'],true);
echo $myObj['color'];
        //how to assign each value to a variable here???
        //$x = rectangle[0][0].color; //doesn't work
    }
}
?>

我想我找到了你要找的东西

表单传输后,您的post数组如下所示:

$\u POST['rectangle']=“[{\'startx\':\'1\',\'starty\':\'2\'”

我想在这个简短的脚本之后,你会说这是多么容易:

$jsonString = filter_input(INPUT_POST, 'rectangle');
$objectArray = json_decode($jsonString);
foreach($objectArray as $key => $singleObject){
  echo $singleObject->startx; // output is 1
  echo $singleObject->starty; // output is 2
);
我还发现了1个:

function addRect(startx, starty, endX, endY, color1, bc) {

    newArray2 = [{
        x: startx,
        y: starty,
        x1: endX,
        y1: endY,
        color: color1,
        borderColor: bc
    }];
    arrayBig.push(newArray2);
    // looks like [[{...}], [{...}]]

    //console.log(arrayBig);
}
如果将newArray2更改为对象而不是包含对象的数组,则结果将更具可读性:

function addRect(startx, starty, endX, endY, color1, bc) {
  var rectangle = {
    x: startx,
    y: starty,
    x1: endX,
    y1: endY,
    color: color1,
    borderColor: bc
  }

  arrayBig.push(rectangle);
  // looks like [{...}, {...}]
}

好的,像这个addRect(startX,startY,宽度,高度,填充,边框);startX=30;和startY=3等等。我只使用javascript和canvas,但不使用cssso。值被传递到addRect函数中,该函数将其推送到数组中。js中的stringify(array)和php中的JSON_decode($array)传递值如何?$myObj=JSON_decode($recivedString,true);我会为你做这项工作。之后,您将访问如下元素:$myObj['color'];我试过这个答案。是的,除了start=array([0]=>array([0]=>[[{\“x\”:80,\“y\”:84,\“x1\”:183,…)之外,我的数组在stringfly之后看起来是这样的,您能解释一下$objectString是什么吗?因为当我使用这个代码段时,我收到一个不同的警告,说为foreach()提供的参数无效。我仍然无法访问这些值。。感谢您提供的更多帮助。
使情况有所不同。将其更改为
name=“矩形”
。您拥有的是jsonString in array in array in array in postarray,因为您的名字是array in array。$objectString被替换为$jsonStringAwesome!它现在可以工作了。谢谢。只需修改代码,如$singleObject[0]->color;并在末尾放一个花括号,但感谢您的帮助。