Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing object's properties via array index

Tags:

arrays

object

php

I have a situation where i have to programmatically do database inserts. I have multiple tables but the order of information of those tables are similar , i.e, in each table, the first coulmn in id, and second is a foregin key, and third is a name, and fourth is a blob and fifth is a text.

I searched php doc and found that I can use $objectName[index] to access the database property. I am getting error

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

The erroneous line is indicated on the code

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);
}

I am using CodeIgniter as a framework.

like image 583
cipher Avatar asked Oct 17 '25 18:10

cipher


2 Answers

Try casting to array:

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

As STDClass is just a dummy container with public dynamic variables and no methods, there should be no problems in casting it to array and backwards as well.

However in some situations numbers are used to represent a variable name.

Example:

$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
like image 138
sybear Avatar answered Oct 20 '25 08:10

sybear


try this function get_object_vars()

or create function to convert to array

function array_to_object($array)//from CodeIgniter forum
 {
  return (is_array($array)) ? (object) array_map(__FUNCTION__, $array) : $array;
 }
like image 23
Rajeev Ranjan Avatar answered Oct 20 '25 07:10

Rajeev Ranjan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!