1

こんにちは、クラス外のデータ配列にアクセスする方法について少し助けが必要です。クラス外で変数を表示する方法について非常に混乱しています。以下に私のコードを示します。

<?php

date_default_timezone_set('Asia/Manila');

require('resources/fpdf/fpdf.php');

class PDF extends FPDF {

    function Header(){

        //HERE IS THE PLACE WHERE SHOULD I PUT THE ARRAY, BUT I CANT ACCESS IT INSIDE

        $this->SetFont('Arial','B',10);
        $this->Cell(180,5,'PURCHASE ORDER',0,0,'C');
        $this->Ln();
        $this->SetFont('Arial','',9);
        $this->Cell(40,5,'Suppliers Name:'.$data['spname'].'  ');
        $this->Ln();
        $this->SetFont('Arial','',9);
        $this->Ln(20);
    }
}

$query = "SELECT * FROM po_order_details WHERE order_code = '".$code."'"; 
$result = $this->db->query($query);
foreach($result->result_array() as $row){
    $data[] = array($row['item_qty'],  //THIS IS THE ARRAY THAT I NEED TO GET
                    $row['spname'], 
                    $row['spaddress'], 
    );
}
$this->session->set_userdata('session_data',$data);
//Column titles
$pdf = new PDF(); 
$header = array('QTY','ITEM / DESCRIPTION' , 'UNIT PRICE', 'TOTAL AMOUNT'); // CHANGE THIS ALSO
$pdf->SetFillColor(255,0,0);
$pdf->Ln();
$pdf->AddPage();
$pdf->BuildTable($header,$data);
$pdf->Ln();
$pdf->Output();

?>

あなたが私を助けてくれることを願っています

4

2 に答える 2

0

それをパラメーターとして渡して、結果を返すことはできますか? お気に入り:

function Header($param_array = array()) {
  // ... modifications, bla bla
  return $result_array;
}

次に、その Header() を呼び出す関数を検索し、その配列パラメーターをその関数全体に渡します。

もちろん、ここでの欠点は、FPDF クラスを変更し、将来必要になった場合に新しいバージョンに適切に更新できないことです。

于 2013-08-28T13:10:03.077 に答える
0

Header メソッドのプロトタイプを変更して、このように配列をパラメーターとして渡してはいかがでしょうか。

<?php

date_default_timezone_set('Asia/Manila');

require('resources/fpdf/fpdf.php');

class PDF extends FPDF {

    function Header( &$titles, &$data ){

        //HERE IS THE PLACE WHERE SHOULD I PUT THE ARRAY, BUT I CANT ACCESS IT INSIDE
        // use $titles and $data as you like here

        $this->SetFont('Arial','B',10);
        $this->Cell(180,5,'PURCHASE ORDER',0,0,'C');
        $this->Ln();
        $this->SetFont('Arial','',9);
        $this->Cell(40,5,'Suppliers Name:'.$data['spname'].'  ');
        $this->Ln();
        $this->SetFont('Arial','',9);
        $this->Ln(20);
    }
}

$query = "SELECT * FROM po_order_details WHERE order_code = '".$code."'"; 
$result = $this->db->query($query);
foreach($result->result_array() as $row){
    $data[] = array($row['item_qty'],  //THIS IS THE ARRAY THAT I NEED TO GET
                    $row['spname'], 
                    $row['spaddress'], 
    );
}
$this->session->set_userdata('session_data',$data);
//Column titles
$pdf = new PDF(); 

$header = array('QTY','ITEM / DESCRIPTION' , 'UNIT PRICE', 'TOTAL AMOUNT'); // CHANGE THIS ALSO
$pdf->Header( $header, $data );

$pdf->SetFillColor(255,0,0);
$pdf->Ln();
$pdf->AddPage();
$pdf->BuildTable($header,$data);
$pdf->Ln();
$pdf->Output();

?>
于 2013-08-28T13:13:22.597 に答える