[請益] 關於物件陣列

看板PHP作者 (哞~)時間18年前 (2007/05/19 20:20), 編輯推噓4(401)
留言5則, 3人參與, 最新討論串1/1
想請教關於物件陣列的問題 物件宣告如下 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)

05/20 12:13, , 1F
為何不是把陣列放進物件,而是把物件作成陣列? O_o
05/20 12:13, 1F

05/20 14:47, , 2F
感謝!真是一語驚醒夢中人啊…
05/20 14:47, 2F

05/20 14:47, , 3F
還是想請問一下,為什麼不能將物件放進陣列呢?
05/20 14:47, 3F

05/20 14:55, , 4F
PHP的陣列不是本來就可以放任何東西了嗎@@?
05/20 14:55, 4F

05/20 16:57, , 5F
我也這麼想…可是做不出來@@
05/20 16:57, 5F
文章代碼(AID): #16JkkWf_ (PHP)
文章代碼(AID): #16JkkWf_ (PHP)