Re: Objects as array key names??

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mar 15, 2008, at 7:16 PM, Ray Hauge wrote:
Jim Lucas wrote:
It has been brought to my attention that with Perl and Ruby, you can use Objects as the value of the key within an array. The examples that were shown to me make me think that this would be an awesome ability to have within PHP. $res = query('Select c_id, c_first_name, c_last_name FROM customers');
$customers = array();
while ( $row = fetch_assoc($res) ) {
   $customers[$row]['contact_locations'] = array();
   $SQL = "SELECT *
       FROM contact_locations
       WHERE c_id={$row['c_id']}";
   $loc_res = query($SQL);
   while ( $loc_row = fetch_assoc($loc_res) ) {
       $customers[$row]['contact_locations'][] = $loc_row;
   }
}
Now, contained within one array "$customers" I have all the information that would be needed for displaying any type of information related to a customer or a customers location.


You may have meant the while loop to iterate over $row = fetch_object($res) ...

// START CODE //
$cid = null;
$customers = array();

while ( $row = fetch_assoc($res) ) {

   $cid = $row['cid'];
   $customers[$cid] = $row;
   $customers[$cid]['contact_locations'] = array();

   $SQL = "SELECT *
       FROM contact_locations
       WHERE c_id={$cid}";

   $loc_res = query($SQL);

   while ( $loc_row = fetch_assoc($loc_res) ) {
       $customers[$cid]['contact_locations'][] = $loc_row;
   }

}
// END CODE //



You could also create a data object associated with customer that makes use of overloading functions -- or whatever you kids are calling them these days to allow:

$customer = new Customer(78); // Load customer with ID 78.
$customer->loadLocations(); // Loads related locations.
$customer->location[n]; // Returns nth location.
$customer->location('home'); // Returns the location dubbed "home."
// You can have location loadLocations() if they're not already set.

The data object would have to make use of __get, __set, and __call.

Hereby, the locations aren't indexed by the object, but are elements in a member array.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux