我有一个包含以下数据的数组,我试图找到价格最低的列,然后获取关联的行数据(库存和供应商)的值,我设法获得了最低的价格,但不确定如何以获取库存和供应商(任意区域)的关联行数据。谢谢
$productdata=array
(
array('Price'=>$row['price1'],'Stock'=>$row['stock1'],'Supplier'=>$row['supplier1']),
array('Price'=>$row['price2'],'Stock'=>$row['stock2'],'Supplier'=>$row['supplier2']),
array('Price'=>$row['price3'],'Stock'=>$row['stock3'],'Supplier'=>$row['supplier3'])
);
$filtered_array = array_filter($productdata, function($v) {
return $v['Price'];});
$minprice= min( array_column( $filtered_array, 'Price') );
print_r($minprice);
答案 0 :(得分:3)
不使用排序或循环的解决方案:
获取数组中的所有价格,然后获取最低价格的键
$prices = array_column($productdata, 'Price');
$min_price = min($prices);
$key = array_search($min_price, $prices);
输出匹配的行:
$match = $productdata[$key];
echo '<pre>' . print_r($match, true) . '</pre>';
文档:
答案 1 :(得分:1)
首先按升序对数组进行排序,然后将第一个元素设为最低。
$filtered_array=array
(
array('Price'=>100,'Stock'=>1000,'Supplier'=>'Kapil'),
array('Price'=>50,'Stock'=>500,'Supplier'=>'Kapil2'),
array('Price'=>200,'Stock'=>2000,'Supplier'=>'Kapil3')
);
for($i = 0; $i < count($filtered_array); $i++ ) {
for($j = $i+1; $j< count($filtered_array); $j++ ) {
if($filtered_array[$i]['Price'] > $filtered_array[$j]['Price']) {
$temp = $filtered_array[$j];
$filtered_array[$j] = $filtered_array[$i];
$filtered_array[$i] = $temp;
}
}
}
print_r($filtered_array[0]);
答案 2 :(得分:0)