Frage

Ich habe ein mehrdimensionales PHP-Array, das ich brauche selektiv Drucken in Excel Writer.Ich habe so etwas:

array(2) {
  [10227]=>
  array(9) {
    ["user"]=>
    string(5) "10227"
    ["talk_time"]=>
    string(1) "8"
    ["acw"]=>
    string(1) "0"
    ["idle"]=>
    string(1) "6"
  }
  [10236]=>
  array(9) {
    ["user"]=>
    string(5) "10236"
    ["talk_time"]=>
    string(2) "10"
    ["acw"]=>
    string(1) "3"
    ["idle"]=>
    string(1) "0"
  }
}

Und in Excel muss es ungefähr so ​​aussehen:

User  | talk_time  | acw  | idle
10227 | 8          | 0    | 6
10236 | 10         | 3    | 0

Ich denke, dass ich das „Schreiben“ hervorragend hinbekomme, aber ich schaffe es scheinbar nicht, die PHP dazu zu bringen, den Wert für jedes Feld selektiv dort zu schreiben, wo und wie ich ihn haben möchte.Ich habe viel gelesen und viele Dinge ausprobiert. Ich denke, die Antwort wäre, zwei foreach-Schleifen zu verwenden, eine für das „anfängliche“ Array und eine andere für das Array der zweiten Dimension, aber aus irgendeinem Grund kann ich es nicht zum Laufen bringen.Ich habe auch versucht, „extrahieren“ zu verwenden, aber es hat nicht so gut geklappt ...Ich bin kein „ausgebildeter“ PHP-Programmierer.Google war meine Universität (und Stackoverflow meine Fakultät) und obwohl ich keine großen Probleme mit der Arbeit mit Arrays habe, steht die Welt mit mehrdimensionalen Arrays auf dem Kopf ...

Jede Hilfe wäre sehr dankbar.

Danke!

----- bearbeiten ----- OK, ich brauche die Funktion "Exportieren in Excel" nicht. Ich kann das verarbeiten, wenn ich den Wert des Arrays einer Variablen zuweisen kann.

Ich mache gerade Folgendes:

foreach ($agents as $row){
  $USER=$row["user"];
  echo "$USER\n";
  foreach($row as $col){
  $TALK_SEC=$col["talk_sec"];
  }
}

Aber alles, was ich bekomme, ist

1023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236

Das ist mein erster Agent (ich beschränke meine Abfrage auf 1 -LIMIT 1-) mal 24 Mal.Wenn ich ein Echo hinzufüge $TALK_SEC, würde ich die erste Zahl jedes der drei vier Felder, die ich abfrage, ungefähr mal so oft erhalten, wie der Agent 24 Mal „ausgespuckt“ wird ...

ENDGÜLTIGE BEARBEITUNG UND ANTWORT

Ich konnte es mit einer einzigen foreach-Anweisung zum Laufen bringen:

foreach ($agents as $row){
    //VAR_DUMP($row);
    $USER=$row['user'];
    $TALK=$row['talk_time'];
    $ACW=$row['acw'];
    $IDLE=$row['idle'];

Jetzt muss ich nur noch die Variablennamen ausdrucken ($USER, $TALK, usw.) in der Tabelle, mit der ich bereits erstellt habe PEAR::EXCEL_WRITER.Natürlich müssen Sie eine Schleife erstellen, um die verschiedenen zu durchlaufen $USERS dass Ihre Abfrage ausgegeben wird.

War es hilfreich?

Lösung

Dieses Skript kann Excel-Dateien generieren.Aber in Ihrem Fall müssen Sie Ihr Array formatieren, um Folgendes einzufügen:

User  | talk_time  | acw  | idle
10227 | 8          | 0    | 6
10236 | 10         | 3    | 0

Das Skript:

<?php

$file="demo.xls";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");
$array = array(
    array(10, 15, 20),
    array(10, 15, 20),
    array(10, 15, 20)
);
?>
<table>
<?php foreach($array as $row): ?>
    <tr>
    <?php foreach($row as $col):?>
        <td><?php echo $col ?></td>
    <?php endforeach; ?>
    </tr>
<?php endforeach; ?>
</table>

Andere Tipps

Dies ist nur eine Ergänzung zu der bereits hier geposteten Antwort ...Es zeigt lediglich, wie die Überschriften für das Array in die Excel-Datei eingefügt werden.Markieren Sie den Beitrag der anderen Person als beantwortet, nicht meinen, falls dies für Sie von Vorteil ist.

Ausgabe:

user    talk_time   acw      idle
10227   8           0        6
10236   10          3        0

Code:

<?php
$array = 
      array (
        10227 => 
        array (
          'user' => '10227',
          'talk_time' => '8',
          'acw' => '0',
          'idle' => '6',
        ),
        10236 => 
        array (
          'user' => '10236',
          'talk_time' => '10',
          'acw' => '3',
          'idle' => '0',
        ),
      );  
$file="demo.xls";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");

$index = array_slice($array,0,1);  
$index = array_keys($index[0]);   

?>
<table> 
    <tr>
      <?php foreach($index as $heading): ?>
        <th><?php echo $heading ?></th>
      <?php endforeach; ?>
    </tr> 
    <?php foreach($array as $row): ?>
    <tr>
       <?php foreach($row as $col):?>
          <td><?php echo $col ?></td>
       <?php endforeach; ?>
   </tr>
   <?php endforeach; ?>
</table>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top