TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   General (http://www.talkphp.com/general/)
-   -   Searching through multidimensional arrays (http://www.talkphp.com/general/4990-searching-through-multidimensional-arrays.html)

Swiftaxe 10-02-2009 01:06 PM

Searching through multidimensional arrays
 
Hi,

I need advice about searching through multidimensional arrays.

My array contains product data for a webshop. This is the structure:

PHP Code:

$array = array( $category =>
    array( 
$product =>
       
$id,
       
$title,
       
$price,
       
etc... )); 

There is several categories and in each category many products with it's data. What is a good way to search such an array for a product with a certain ID? I need the keys for each dimension returned so I can extract data from that product.

Is there a way to do this without having nested foreach loops?
Tell me If I am not clear enough.

Any help is greatly appreciated!

/Swiftaxe

Village Idiot 10-02-2009 10:59 PM

Quote:

Originally Posted by Swiftaxe (Post 28633)
Hi,

I need advice about searching through multidimensional arrays.

My array contains product data for a webshop. This is the structure:

PHP Code:

$array = array( $category =>
    array( 
$product =>
       
$id,
       
$title,
       
$price,
       
etc... )); 

There is several categories and in each category many products with it's data. What is a good way to search such an array for a product with a certain ID? I need the keys for each dimension returned so I can extract data from that product.

Is there a way to do this without having nested foreach loops?
Tell me If I am not clear enough.

Any help is greatly appreciated!

/Swiftaxe

Nested foreaches would be the best way, but doing this outside of a database to start with is bad. Why aren't you using a database? SQL queries could search though results literally thousands of time faster.

Swiftaxe 10-04-2009 12:03 PM

Thanks! I thought doing several sql-queries would be more time-consuming.

So making a dozen of these queries would be faster?: "SELECT title FROM products WHERE id=$id LIMIT 1"

Swiftaxe 10-04-2009 03:21 PM

Village Idiot,

I timed the two different approaches. Doing 16 sql queries was way slower than looping the arrays.
Sql query time: 0.002832 msec
Array looping time: 0.000097 msec

But I guess that if there were thousands of products the sql would be faster. I only have about 30 in my test.

Village Idiot 10-04-2009 05:35 PM

Quote:

Originally Posted by Swiftaxe (Post 28664)
Village Idiot,

I timed the two different approaches. Doing 16 sql queries was way slower than looping the arrays.
Sql query time: 0.002832 msec
Array looping time: 0.000097 msec

But I guess that if there were thousands of products the sql would be faster. I only have about 30 in my test.

That is because of connection overheads associated with each individual query. Can you show us the query? I've never seen a need to use that many queries for one task before.


All times are GMT. The time now is 01:58 PM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0