Sometimes I need to build an array of lists with a one to many type relationship.
For example this data:
1. item1 has a parent of key1.
2. item2 has a parent of key2.
3. item3 has a parent of key1.
Using PHP after packing the array I will end up with something like this:
<?php
$m = array();
$m['key1'][] = 'item1';$m['key2'][] = 'item2';$m['key1'][] = 'item3';
print_r($m);
?>Result:
Array( [key1] => Array ( [0] => item1 [1] => item3 )
[key2] => Array ( [0] => item2 )
)In javascript there is some options to do something similar. I ended up with something like this:
packedArr[“key1”] = “item1,item3”
packedArr[“key2”] = “item2”
Not exactly array in array[key] but the comma separated list did what I needed.
Here is the javascript itself. To test it you can use online javascript testers or just make up a html page with a button and maybe have onclick display document.getElementById(“demo”).innerHTML = output;
<script>function packArr() {var pA = Array();
var inA = [ ["child1","parent1"], ["child2","parent2"], ["child3","parent1"], ["child4","parent1"], ["child5","parent2"] ];
var inALen = inA.length;for (var i = 0; i < inALen; i++) { //alert(inA[i]); if (pA[inA[i][1]] == null) { pA[inA[i][1]] = inA[i][0]; } else { pA[inA[i][1]] = pA[inA[i][1]] + "," + inA[i][0]; }}
res="";for ( var key in pA ) { res = res + key + ": " + pA[key] + "<br>";};//res = myArray["parent1"];document.getElementById("demo").innerHTML = res;}</script>