Javascript 如何将多维数组解析为PHP
我正在尝试将多维数组发布到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
我的数组是用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;并在末尾放一个花括号,但感谢您的帮助。