2016-05-10 16 views
0

zeigt Hallo Leute, ich habe ein Problem bei der Anzeige von Arrays ...Wie man Array in einem Array mit - PHP

Dies ist mein Array.

[ 
    "ABM" => [ "" => [ "" => 0 ] ], 
    "GAS" => [ "one" => [ "F" => 1 ] ], 
    "HUMMS" => [ "" => [ "" => 0 ] ], 
    "STEM" => [ "" => [ "" => 0 ] ] 
]; 

dies ist mein Code für dieses Array:

$array = array(); 
$array[$p['CourseCode']][$p['YearLevel']][$p['Gender']]+=$p['count']; 

und ich möchte es hier anzuzeigen:

 ---ONE--- ---TWO--- 
CODE | M | F | M | F | 
    |  |  |  |  | 

wenn es 'eins' ist, wird es die COUNT angezeigt werden - --ONE --- oder auch --- --- ZWEI ---

und wenn es 'F' ist, wird das COUNT auf F oder el angezeigt se M

Sorry für meinen begrenzten english..and schlechte Erklärung einen gerade einen Neuling in der Programmierung im, .. Danke

+5

machen Sie Ihr Array frisch und lesbar. .. –

+0

@Frayne Konok wie kann ich das tun? – KUPSKIE

+0

Was meintest du mit CODE? –

Antwort

0

Vielleicht haben Sie etwas wollen, wie

<?php 

$data = 
[ 
    "ABM" => [ "" => [ "" => 0 ] ], 
    "GAS" => [ "one" => [ "F" => 1 ] ], 
    "HUMMS" => [ "" => [ "" => 0 ] ], 
    "STEM" => [ "" => [ "" => 0 ] ], 
    "COL1" => [ "one" => [ "" => 1 ] ], 
    "COL2" => [ "one" => [ "F" => 2 ] ], 
    "COL3" => [ "" => [ "" => 3 ] ], 
    "COL4" => [ "" => [ "F" => 4 ] ], 
]; 


$rows = []; 
foreach($data as $key=>$arr) 
{ 
    $row = array_fill(0, 5, ''); 
    $row[1+((('one' !== key($arr))<<1) | ('F' === key(current($arr))))] = '' . current(current($arr)); 
    $row[0] = $key; 
    $rows[] = $row; 
} 

?> 

<table border="1"> 
    <tbody> 
    <tr> <td rowspan="2"></td> <td colspan="2"> ONE </td> <td colspan="2"> TWO </td> </tr> 
    <tr>      <td>M</td> <td>F</td>  <td>M</td> <td>F</td> </tr> 
<?php foreach($rows as &$row): ?> 
    <tr> 
<?php foreach($row as &$col): ?> 
     <td><?php echo $col; ?></td> 
<?php endforeach; ?> 
    </tr> 
<?php endforeach; ?> 
    </tbody> 
</table> 

Explaination
Wir haben eine gestapelte Anordnung als Datenquelle für jede Zeile. Die Tasten entscheiden, den Wert, in welcher Spalte gefüllt in

. (ein | zwei) => (M | F) => Wert

Das sieht aus wie ein binärer Baum. Denken wir die Spalte ein/M waren Nummer 0 und die letzte Spalte ‚zwei/F‘ Nummer 3. Das bedeutet ein Ergebnisse in 0 oder 1 und zwei in 2 oder 3, oder sagen:

ein: 0 + (0 oder 1)

zwei: 2 + (0 oder 1)

Wenn +0 oder +1 von M oder F entschieden wird.In Binärzahlen sieht es wie folgt aus:

0 = 00

1 = 01

2 = 10

Da die Bits in diesen Zahlen eindeutige Positionen haben, können wir nur Verwenden Sie eine binäre ODER-Disjunktion anstelle von Addition, das ist | in PHP, die die CPU schneller verarbeiten wird.

ein logisches Vergleichser in wahr oder falsch zu den ganzen Zahlen Auswertung 1 und 0 ('one' !== key($arr)) ist wahr/1, wenn der Schlüssel etwas anderes als „ein“, zwei bedeutet. 01 linksbündig ist 10 (dezimal 2). Dies geschieht durch << bit_count in PHP. Abhängig von M/F wird eine 0 oder 1 hinzugefügt (ODER-Disjunktion). Wir haben unseren Index von 0 bis 3. Da wir den "CODE" in Spalte 0 haben wollen, fügen wir 1 zum berechneten Datenspaltenindex hinzu und speichern den "CODE" in Spalte 0.

+0

w0w dein gutes ... Danke – KUPSKIE

0

Ich werde nicht die Tabelle für Sie entwerfen, aber hier ist die Funktionen ...

Sie benötigen hier eine Schleife, verwenden Sie 3 foreach loop für den Zugriff auf die letzte Tiefe des Arrays.

$arr = [ 
    "ABM" => [ "" => [ "" => 0 ] ], 
    "GAS" => [ "one" => [ "F" => 1 ] ], 
    "HUMMS" => [ "" => [ "" => 0 ] ], 
    "STEM" => [ "" => [ "" => 0 ] ] 
]; 


foreach($arr as $key => $value){ 
    echo 'Code: '.$key."&nbsp;&nbsp;&nbsp;"; 
    foreach($value as $k1 => $v1){ 
     if($k1 == "one") 
      echo 'ONE: '.$k1."&nbsp;&nbsp;&nbsp;"; 
     else 
      echo 'TWO: '.$k1;  
     foreach($v1 as $k2 => $v2){ 
      if($k2 == 'F') 
       echo 'Gender: F - '.$v2."<br/>"; 
      else 
       echo 'Gender: M - '.$v2."<br/>"; 
     } 
    } 
} 

Ergebnis:

Code: ABM  TWO:  Gender: M - 0 
Code: GAS  ONE: one Gender: F - 1 
Code: HUMMS TWO:  Gender: M - 0 
Code: STEM TWO:  Gender: M - 0 
+1

Danke @Frayne Konok – KUPSKIE

+0

Willkommen, ich weiß, dass Sie Ihren Wunsch 'table/div' von diesem Code entwerfen können. Alles Gute für dich. –

Verwandte Themen