2016-06-12 15 views
0

Ich hoffe, ich habe das richtig gestellt. Ich habe ein mehrdimensionales Array wie unten, das wurde von [Typen] vorsortiert und jetzt muss ich es durchschleifen, passende Typen finden, wenn gefunden, muss ich folgendes herausbringen (sorry für kurze Eingabe, aber kann nicht wirklich in Worten erklärenSumme aller Werte aller Schlüssel, wenn Schlüsselwerte in einem mehrdimensionalen Array übereinstimmen

Array 
(
[0] => Array 
    (
     [image] => 479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 43 
     [prices] => 12000000 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 16 
     [beds] => 1 
    ) 

[1] => Array 
    (
     [image] => 479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 44 
     [prices] => 12003060 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 16 
     [beds] => 1 
    ) 

[2] => Array 
    (
     [image] => 479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 48 
     [prices] => 12009800 
     [quantity] => 1 
     [aspect] => North 
     [floor] => 24 
     [beds] => 1 
    ) 

[3] => Array 
    (
     [image] => 479/beatniq/devt4147205-4.jpg 
     [types] => BE2 
     [sizes] => 79 
     [prices] => 22046511 
     [quantity] => 1 
     [aspect] => East 
     [floor] => 32 
     [beds] => 2 
    ) 

[4] => Array 
    (
     [image] => 479/beatniq/devt4147205-1.jpg 
     [types] => BE2P 
     [sizes] => 108 
     [prices] => 30139534 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 39 
     [beds] => 2 
    ) 

[5] => Array 
    (
     [image] => 479/beatniq/devt4147205-1.jpg 
     [types] => BE2P 
     [sizes] => 110 
     [prices] => 30141534 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 34 
     [beds] => 2 
    ) 

) 

Ausgang:.

Type of property  Sizes  Price range     Availability 
BE1     43-44m2  ฿12,000,000-฿12,009,800  3 
BE2     79m2   ฿22,046,511     1 
BE2P     108-110m2  ฿30,139,534-฿30,141,534  2 

ich weiß, das folgende ist das Ergebnis nicht erreichen werde, aber das, was ich das Array einzeln so weit Ausgang habe, wo, wie ich sort der Notwendigkeit zu gruppieren?

if(! empty ($dev_units_available)) { 
     $arraySize = count($dev_units_available); 
     for($i=0;$i<$arraySize;$i++){ ?> 
     <tr class="highlight"> 
      <td style="width:60px;"> 
      <a href="/a-link/"><img src="<?php echo $dev_units_available[$i][image];?>" width="100" class="masthead" alt="a building"></a> 
      </td> 
      <td><?php echo $dev_units_available[$i][types];?></td> 
      <td><?php echo $dev_units_available[$i][sizes].' '.$areaunit;?></td> 
      <td><?php echo get_custom_price($dev_units_available[$i][prices]);?></td> 
      <td><strong><?php echo $dev_units_available[$i][quantity];?> available</strong></td> 
      <td class="int" style="width:120px;"><div class="button"><a href="#" onclick="toggleRow(<?php echo $i;?>);return false;" class="add"><strong>More details</strong></a></div></td> 
     </tr> 
     <tr id=row<?php echo $i;?> style='height:0px;'> 
      <td style='padding:0;border:none;'> 
      <div id="div<?php echo $i;?>" style="display:none;">Hidden row content goes here</div> 
      </td> 
     </tr> 

    } 

    } 

Vielen Dank, Malisa

+0

Ich bin nicht sicher, was Sie versuchen tatsächlich zu erreichen, aber grob gesagt ich ein neues Array erstellen würde, wobei jede Taste ein Typ ist, und der Wert ist ein weiteres Array mit zB Größen, price_range und Verfügbarkeit , und Sie berechnen die Werte von diesen während der Schleife über das ursprüngliche Array. Dann zeigst du es einfach – niklon

+0

Danke, dass du dir Zeit genommen hast zu antworten, ich habe irgendwie geahnt, dass ich das nicht richtig erklärt habe, aber manchmal schwierig von einem thailändischen Gehirn ins Englische zu bringen. Grundsätzlich habe ich eine neue Entwicklung, bestehend aus etwa 400 Einheiten, 40 Stockwerken etc .. Aber ich bin wirklich kämpfen auf, wie man das Array für eine Übereinstimmung auf Typ überprüfen, die (BREAK) zusammen zählen diese Zimmertyp Werte, dann starte die Schleife wieder und so weiter. Später, wenn ich Hilfe finden kann, hoffentlich, kann ich die Ausgabe zu einem onclick Ereignis gruppieren, um jeden Zimmertyp nach unten zu schieben. – Malisa

+0

Für mich sieht es nicht so aus, als ob Sie mit diesem Code irgendwo hinkommen würden. Beginnen Sie von Grund auf neu und machen Sie etwas mit einem helfenden Array, um die genauen Werte in einem separaten Code zu erhalten, und dann im Code, den Sie anzeigen, nur Echo-Zeug. – niklon

Antwort

0

Managed, um es nach viel Versuch und Irrtum zu sortieren .. kein Zweifel, es gibt einen einfacheren Weg, aber das funktioniert.

hatten gerade von [Arten], um das Original-Array zu sortieren

Array 
(
    [0] => Array 
     (
     [image] => /479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 45 
     [prices] => 12000000 
     [quantity] => 1 
     [aspect] => 
     [floor] => 23 
     [beds] => 1 
    ) 

[1] => Array 
    (
     [image] => /479/beatniq/devt4147205-2.jpg 
     [types] => BE2 
     [sizes] => 53 
     [prices] => 15667000 
     [quantity] => 1 
     [aspect] => 
     [floor] => 45 
     [beds] => 2 
    ) 

[2] => Array 
    (
     [image] => /479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 48 
     [prices] => 13890000 
     [quantity] => 1 
     [aspect] => 
     [floor] => 56 
     [beds] => 1 
    ) 

) 

mit der folgenden Funktion:

function arraySort($input,$sortkey){ 
    foreach ($input as $key=>$val) $output[$val[$sortkey]][]=$val; 
    return $output; 
} 

$dev_units_available = arraySort($dev_units_available,'types'); 

Was mir dieses Array gab:

Array 
(
    [BE1] => Array 
     (
      [0] => Array 
       (
       [image] =>/479/beatniq/devt4147205-7.jpg 
       [types] => BE1 
       [sizes] => 45 
       [prices] => 12000000 
       [quantity] => 1 
       [aspect] => 
       [floor] => 23 
       [beds] => 1 
      ) 

     [1] => Array 
      (
       [image] =>/479/beatniq/devt4147205-7.jpg 
       [types] => BE1 
       [sizes] => 48 
       [prices] => 13890000 
       [quantity] => 1 
       [aspect] => 
       [floor] => 56 
       [beds] => 1 
      ) 

    ) 

[BE2] => Array 
    (
     [0] => Array 
      (
       [image] => /479/beatniq/devt4147205-2.jpg 
       [types] => BE2 
       [sizes] => 53 
       [prices] => 15667000 
       [quantity] => 1 
       [aspect] => 
       [floor] => 45 
       [beds] => 2 
      ) 

    ) 

) 

und dann ausgegeben indem Sie die ursprüngliche Schleife zu diesem ändern.

foreach($dev_units_available as $item){ 
    $arraySize = count($item); 
    for($i=0;$i<$arraySize;$i++){ 
     HTML HERE 
    } 
} 
Verwandte Themen