简体   繁体   中英

Compare array values from one array PHP

NOTE:

I'm new to php and mysql.

Background info:

I have +/- 30,000 products and they are from 7 different supplier and they have a lot of the same products

let's say i have 1 product and three of the suppliers have the it, i need to publish the product with the lowest price and the other two product stay unpublished

that is the basic idea and this must run through the 30,000 products and check and see if there are any matches and run the publishing function

SQL setup:

There are two tables xxxx_virtuemart_product and xxxx_virtuemart_product_prices

There are three rows in xxxx_virtuemart_product ▬▬▬ product_id,product_sku,published ▬▬▬

There are two rows in xxxx_virtuemart_product_prices ▬▬▬ product_id,product_price ▬▬▬

My little bit of code:

I have this little code because i'm stuck, how can i make a check to see if there are any matches and then run a query to change the published value of the product with the lowest price?

i know there is a way to use the query to check for matches, but do not understand how to do is

$query = "SELECT `product_sku` FROM `xxxx_virtuemart_product`";
$query_run = mysql_query($query) or die (mysql_error());

while($row = mysql_fetch_assoc($query_run)){
    foreach ($row as $key => $ps){

    }
}

The below code is to check the price (not query optimize just a rough draft)

$z = //products price;
$x = //products price;
$c = //products price;

if ($z >= $x && $c >= $x) {

    //the this products published value to 1

}else if ($x >= $z && $c >= $z) {

    //the this products published value to 1

}else if ($z >= $c && $x >= $c) {

    //the this products published value to 1

}

Can anyone please help me with this?

Thanks for reading

any questions are welcome.

Your problem is not about to compare arrays but more algorithm. I will try this way. 1)SQL query to retrieve all the products : sql_products 2)construct a hashmap those key is product SKU (see : PHP Array )

To construct PHP hashmap : use arrays of arrays. Example : product_map[] = array();

foreach sql_product of sql_products : - product_map[sql_product[SKU]][] = array(sql_product[supplier], sql_product[price], sql_product[information]) end of loop

Then loop again over the map of products constructed and sort each product record by price : that means you have to write a function to sort array (supplier, price, information).

Now you have a map of product : SKU => array(of array (supplier, price, information))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM