通过数组索引访问对象的属性

时间:2013-06-26 07:27:23

标签: php arrays object

我有一种情况,我必须以编程方式进行数据库插入。我有多个表,但这些表的信息顺序是相似的,即在每个表中,id中的第一个coulmn,第二个是foregin键,第三个是名称,第四个是blob,第五个是文本

我搜索php doc并发现我可以使用$ objectName [index]来访问数据库属性。我收到错误

Cannot use object of type stdClass as array in C:\....php on line ..

错误的行显示在代码

private function uploadTemp($databaseObject, $table_name){
    $this->load->database();
    //get file_contents too;
    $file_id = $databaseObject[3]; // < Here's where the error appeared
    $this->db->from('tbl_file')->where('file_id',$file_id); 
    $q = $this->db->get();
    $data = $q->row();
    $query = "INSERT INTO $table_name VALUES(NULL, '".$databaseObject[2]."','".$data->filecontent."');";
    $this->db->query($query);
}

我使用CodeIgniter作为框架。

2 个答案:

答案 0 :(得分:3)

尝试转换为数组:

$file_id = (array) $databaseObject[3];

由于STDClass只是一个带有public dynamic variablesno methods的虚容器,因此在将它转换为数组和向后时应该没有任何问题。

但在某些情况下,数字用于表示变量名称。

示例:

$array ; //Is some array created by engines / database handlers.

$obj = (object) $array ;

echo $obj->0 ; //Hell it will not work.
echo $obj[0] ; //The same problem.

echo $obj->{'0'} ; //PERFECT

答案 1 :(得分:1)

尝试此功能get_object_vars()

或创建转换为数组的函数

function array_to_object($array)//from CodeIgniter forum
 {
  return (is_array($array)) ? (object) array_map(__FUNCTION__, $array) : $array;
 }