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

Reply via email to