作者icybleach (哞~)
看板PHP
標題[請益] 關於物件陣列
時間Sat May 19 20:20:44 2007
想請教關於物件陣列的問題
物件宣告如下
class Operation
{
var $tran_id;
var $w_r;
var $data_item;
function set_tran_id($argv)
{
$this->tran_id = $argv;
}
function set_w_r($argv)
{
$this->w_r = $argv;
}
function set_data_item($argv)
{
$this->data_item = $argv;
}
}
$op[] = new Operation;
//在此宣告物件陣列
$opdata = chop($_POST['usersComments']);
//消去多餘的空白
$opraw = explode("\n", $opdata);
//將輸入的各行指令分開
$opnum = sizeof($opraw);
//算出輸入指令的個數
$i = 0;
$j = 0;
$opt_cell = 0;
//optemp的元素個數
$con_flag = 0;
for($i = 0; $i < $opnum; $i++)
{
$optemp = explode(" ", $opraw[$i]);
//將指令中各元素分開
$opt_cell = sizeof($optemp);
//算出指令中元素個數
if($opt_cell != 3)
{
echo "輸入錯誤!";
}
else
{
$op[$i]->set_tran_id($optemp[0]);
//逐一輸入各指令的
$op[$i]->set_w_r($optemp[1]);
//transaction id, W/R
$op[$i]->set_data_item($optemp[2]);
//以及access data item
}
}
問題在最後迴圈輸入op[]的時候,輸入op[0]的時候過了
但輸入op[1]就出現error
Call to a member function set_tran_id() on a non-object
另外還有一個問題,
1.我將傳進來的資料多餘的空白消去,存進$opdata中
2.將每個指令分別存放進$opraw陣列裡面,
3.從$opraw陣列把裡面每一個指令用' '分開,放入$optemp陣列
$optemp = explode(" ", $opraw);
4.逐一放入op[$i]裡面,
Ex.
input
ab cd ed
aa bb cc
1.$opdata = ab cd ed
\naa bb cc
2.$opraw[0] = ab cd ed
$opraw[1] = aa bb cc
3.迴圈第一次
4.
$optemp[0] = ab => op[0]->tran_id = $optemp[0]
$optemp[1] = cd => op[0]->w_r = $optemp[1]
$optemp[2] = ed => op[0]->data_item = $optemp[2]
迴圈第二次
$optemp[0] = aa => op[1]->tran_id = $optemp[0]
$optemp[1] = bb => op[1]->w_r = $optemp[1]
$optemp[2] = cc => op[1]->data_item = $optemp[2]
問題是當指令中空白超過一個,前面的chop()指令好像不work了
迴圈第二次時$optemp[0]照舊還是aa,但$optemp[1]就變成空白了
麻煩版上的各位解答了,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.22.18.90
※ 編輯: icybleach 來自: 163.22.18.90 (05/19 23:25)
推 JoeHorn:為何不是把陣列放進物件,而是把物件作成陣列? O_o 05/20 12:13
推 icybleach:感謝!真是一語驚醒夢中人啊… 05/20 14:47
→ icybleach:還是想請問一下,為什麼不能將物件放進陣列呢? 05/20 14:47
推 blackbing:PHP的陣列不是本來就可以放任何東西了嗎@@? 05/20 14:55
推 icybleach:我也這麼想…可是做不出來@@ 05/20 16:57