2017-02-23 13 views
0

Ich versuche ein mehrdimensionales Array zu PHP zu posten, aber ich habe kein Glück.
My-Array wird in Javascript geschaffen, die Arrays/Objekte und in jedem Array enthält, ist ein zugeordneter Wert, wie es
in dieser Funktion durchgeführt wird:Wie analysiert man ein multidimensionales Array nach 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); 
} 

I diese Funktion verwenden, wie der Eingangswertes zum Ziel:

function send() { 

    var elem = document.getElementById("rectangle"); 
    var myJSON = JSON.stringify(arrayBig); 
    elem.value = myJSON; 
} 

Meine hTML-Formular ist dies:

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

Jetzt bin ich mit trou ble in diesem Teil der Array-Werte zuweisen hier in 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 
    } 
} 
?> 

Wenn jemand mir zeigen kann, wie dies richtig zu analysieren, ich danke Ihnen im Voraus.
In Javascript alles, was ich tun muss, um den Wert einer Var zuweisen: c = arrayBig [0] [0] .color;

Aber wie mache ich diese Codezeile in PHP?
Würde auch der Name der Eingabe wie name = "rectangle []" oder name = "rectangle [] []" aussehen?

+0

ok wie diese addRect (startX, startY, Breite, Höhe, Füller, Grenze); startX = 30; und startY = 3 und so weiter. – james

+0

Ich benutze nur JavaScript und Canvas für diese aber nicht css – james

+0

, so dass die Werte in die addRect-Funktion übergeben werden, die es in das Array schiebt. – james

Antwort

0

Ich glaube, ich habe gefunden, was Sie suchen.

nach Form Übertragung Ihrer Post Array sieht wie folgt aus:

$_POST['rectangle'] = "[{\"startx\": \"1\", \"starty\": \"2\"}]"

Ich denke, nach diesem kurzen Skript werden Sie sagen, wie einfach es war:

$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

Ich habe diese Antwort versucht.Ja, mein Array sieht nach Stringfly so aus, außer dem start = Array ([0] => Array ([0] => [[{"x": 80, "y": 84, "x1" : 183, ..... Könntest du bitte erklären, was $ objectString hier ist, wenn ich dieses Snippet verwende, bekomme ich eine andere Warnung, die besagt, dass ein ungültiges Argument für foreach() angegeben wurde. Ich kann auf die Werte immer noch nicht zugreifen mehr Hilfe, die Sie mir geben können. – james

+0

'' '' macht den Unterschied. Ändern Sie es zu '' name = "rectangle" ''. was Sie haben, ist jsonString in Array in Array in Postarray, weil Ihr Name Array in Array ist. $ objectString wird durch $ jsonString ersetzt – mtizziani

+0

Awesome! Es funktioniert jetzt. Danke. Muss einfach Ändere den Code wie $ singleObject [0] -> color und lege am Ende eine geschweifte Klammer, aber danke für die Hilfe. – james

1

und ich fand 1 mehr:

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); 
} 

Wenn Sie newArray2 zu einem Objekt ändern und nicht Ein Array mit Objekt in Ihrem Ergebnis wird besser lesbar sein:

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 [{...}, {...}] 
} 
Verwandte Themen