2017-02-23 93 views
0

Я пытаюсь опубликовать многомерный массив на php, но мне не повезло.
Моего массив создан в JavaScript, который содержит массивы/объекты и в каждом массиве является соответствующим значением, например, как это делается
в этой функции:Как разобрать многомерный массив на PHP

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> 

Теперь я имею полукомбинезоны BLE в этой части, присваивающей массив значения для варов в PHP здесь:

<?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 
    } 
} 
?> 

Если кто-то может показать мне, как разобрать это правильно, я благодарю вас заранее.
В Javascript все, что мне нужно сделать, чтобы присвоить значение переменной var: c = arrayBig [0] [0] .color;

Но как мне сделать эту строку кода в PHP?
Также будет ли имя ввода выглядеть как name = "rectangle []" или name = "rectangle [] []"?

+0

ОК как этот addRect (startX, startY, ширина, высота, filler, border); startX = 30; и startY = 3 и т. д. – james

+0

Я использую только javascript и canvas для этого, но не css – james

+0

, поэтому значения передаются в функцию addRect, которая толкает ее в массив. – james

ответ

0

Я думаю, что нашел то, что вы ищете.

после передачи формы вашего сообщения массива выглядит следующим образом:

$_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 
); 
+0

Я пробовал этот ответ.Да, мой массив выглядит так, как после stringfly, кроме start = Array ([0] => Array ([0] => [[\ "x \": 80, \ "y \": 84, \ "x1 \" : 183, ..... Не могли бы вы объяснить, что $ objectString здесь, потому что, когда я использую этот фрагмент, я получаю другое предупреждение, говорящее о некорректном аргументе, предоставленном foreach(). Я не могу получить доступ к значениям еще ... Спасибо за любые больше помощи, которую вы можете мне дать – james

+0

'' '' делает разные. для '' name = "rectangle" ''. у вас есть jsonString в массиве в массиве в postarray bacause вашего имени - массив в массиве. $ objectString заменяется на $ jsonString – mtizziani

+0

Awesome! он работает сейчас. измените код, как $ singleObject [0] -> color, и положите фигурные скобки в конце, но спасибо за помощь. – james

1

и я нашел более 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 [{...}, {...}] 
}