Вопрос

У меня есть многомерный массив PHP, который мне нужно выборочно Печать на писатель Excel. У меня есть что -то вроде этого:

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

И в Excel мне это нужно, чтобы выглядеть как -то вроде этого:

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

Я думаю, что я могу управлять «письмом», чтобы Excel, но я не могу заставить PHP выборочно написать значение для каждого поля, где и как я этого хочу. Я много читал и пробовал много вещей, я думаю, что ответ будет использовать две петли Foreach One для «начального» массива и еще один для массива второго измерения, но по какой -то причине я не могу заставить его работать. Я также пытался использовать «экстракт», но это не было слишком хорошо ... Я не «обученный» программист PHP. Google был моим университетом (и Stackoverflow My Faculty), и хотя у меня нет слишком больших проблем с работой с массивами ..., мир переходит с ног на голову с многомерными массивами ...

Любая помощь будет очень оценена.

Спасибо!

----- РЕДАКТИРОВАТЬ ----- ОК, мне не нужна функция «Экспорт в Excel», я могу справиться с тем, что, как только смогу назначить значение массива переменной.

Я сейчас делаю:

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

Но все, что я получаю, это

1023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236102361023610236

который является моим первым агентом (я ограничиваю свой запрос 1 -Limit 1-) раз 24 раза. Если я добавлю эхо в $TALK_SEC, Я бы получил первое число каждого из трех четырех полей, которые я запрашиваю примерно в 24 раза, когда агент будет «выплеснуть» ....

Окончательное редактирование и ответ

Я смог заставить его работать, используя фактическое заявление о предании:

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

Теперь все, что мне нужно сделать, это распечатать имена переменных ($USER, $TALK, и т. д. ...) в таблице, которую я уже создал PEAR::EXCEL_WRITER. Анкет Конечно, вам нужно создать цикл для итерации в разных $USERS что ваш запрос выведет.

Это было полезно?

Решение

Этот скрипт может генерировать файл Excel. Но в вашем случае вам нужно отформатировать свой массив, чтобы положить:

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

Сценарий:

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

Другие советы

Это всего лишь дополнение к ответу, уже опубликованному здесь ... он просто показывает, как включить заголовки для массива в файл Excel. Отметьте пост другого человека как ответ, а не мой, если это то, что делает это для вас.

выход:

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

код:

<?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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top