Got a problem I am stuck on and hoping one of your nice folks can see what I am doing wrong. In my class function register_install, I have this array built: $REGISTER = array( <this portion snipped for proprietary reasons> # Set the action varible 'ACTION' => 'register', # Set the serial number 'SERIAL_NUMBER' => APP_SERIAL_NUMBER, # Set the server array 'SERVER' => array( 'DOMAIN' => $this->_DOMAIN, 'IP' => $this->_CURRENT_IP, 'INSTALL_PATH' => $this->_BASE_PATH, 'BASE_FOLDER' => $this->_ROOT_FOLDER ), 'DATA' => array( # Set the additional information block to null 'ADDITIONAL' =>NULL, # Set the additional information block to null 'RETURN_URL' => $REGISTER['SERVER']['DOMAIN'] . $REGISTER['SERVER']['BASE_FOLDER'] . 'install.php?RETURNDATA=', // Return data will be appended at server end # Set the private key 'PRIVATE_KEY' => $this->_PRIVATE_KEY ), 'LICENSE' => array( # Set the user and license request elements in the array 'TYPE' => $licensetype, 'USERNAME' => $this->_USERNAME, 'ORDERID' => $this->_ORDERID, 'PRODUCTID' => $this->_PRODUCTID, 'LICENSEID' => '' // This will be blank on new installs ), # Set the install date 'INSTALL_DATE' => date("Y-m-d") // 20010310 ); Code (markup): Now, using the switch command, based on the action, the following command is executed within this function: $DATA['RESULT'] = $this->_call_home($stuff_to_send, $dialhost, $dialpath, $dialport); Code (markup): The above works and it does send the array. I can decrypt and serialize it and read all but the two dimensional elements of the array, encrypt it back and at the client end unserialize the results and read it. Problem is this error: PHP Fatal error: Cannot use string offset as an array in <path>/license_server.class.php on line 585 This error points to this line: 'TYPE' => $licensetype, I am totally stumped. The block of code that receives the serialized and encoded array is: public function receive_call($receive_call_return){ //$receive_call_return = ''; // To test empty data # if there is not data die with an error if(empty($receive_call_return)) { return $this->_generate_return_data(array('RESULT'=>'EMPTY_DATA')); } # init the results array $receive_call_results = array(); # decrypt the data $receive_call_results = $this->_decrypt($receive_call_return, 'HOMEKEY'); <snipped for proprietary reasons> # Get the action variable from the array and process the request $action = $receive_call_results['ACTION']; switch($action){ case 'register': $this->process_register($receive_call_return); break; } Code (markup): This is part of the server main class. Now the process_register action is where the error generates: private function process_register($register_data=array()){ # Break down the request and process a registration $license_type = $register_data['LICENSE_INFO']['TYPE']; return $this->_generate_return_data($license_type)); } } Code (markup): This last function is not the problem, but the previous one above it and the one in the client object. I would almost wash someone's feet and kiss them if they can tell me, first what causes "Cannot use string offset as an array' AND how I can avoid it and do better, and then finally to fix the above. Deep appreciation for a solution.