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