2011-03-18 44 views
11

我有像'operation.date','operation.name'等collumns的mysql表。 將該表數據作爲對象提取後與$mysqli->fetch_object()我得到這個(print_r of row):名稱中帶點的php對象屬性

stdClass Object 
(
[id] => 2 
[operation.date] => 2010-12-15 
[operation.name] => some_name 
) 

我怎麼存取權限operation.dateoperation.name和所有其他古怪的命名對象的屬性?

+3

這是一個重複的對象。答案是,這不是一個有效的財產。你應該改變它。但是你可以使用'$ obj - > {'operation.date'}'來訪問它。 – Gordon 2011-03-18 11:07:34

+0

可能重複的[對象的鍵中的連字符](http://stackoverflow.com/questions/2925044/hyphens-in-keys-of-object)以及[如何訪問此對象屬性](http:// stackoverflow.com/questions/758449/php-how-do-i-access-this-object-property) – Gordon 2011-03-18 11:14:08

+0

對不起。正在搜索,但不是連字符。 – egis 2011-03-18 11:25:26

回答

31

指定您的SQL查詢的別名一樣SELECT column AS nameWithoutDots ...
$object->{'operation.name'}
訪問這些屬性或者把對象數組像這樣:$obj = (array)$obj; echo $obj['operation.name']

+1

+1換成引號,以告訴OP如何治癒原因而不是症狀 – Gordon 2011-03-18 11:15:45

+1

我知道別名,但寫入里程很費力查詢所有列作爲別名:)因爲你的答案是最豐富的,我會接受它;)感謝所有的答案。 – egis 2011-03-18 11:24:27

3

要訪問你需要花括號來包裝他們這些屬性:

echo $object->{"operation.date"} //2010-12-15

如果設置一個屬性這樣有問題的符號被去除,從而允許您訪問屬性爲echo $object->operationdate //2010-12-15

+9

+1,但'operation.date'需要用引號括起來,我想。 – 2011-03-18 11:11:52

+2

您需要將echo $ object - > {'operation.date'} – 2015-08-25 14:01:42

2

使用'as'功能更改sql以返回有效的屬性名稱

例如,選擇operation.date如日期

8

訪問屬性以點應該是正確的方法:

echo $object->{"operation.date"} 
0

你可以得到assoc命令陣列,而不是通過使用$mysqli->fetch_assoc()