返回min数组值索引

时间:2012-10-01 13:09:00

标签: php

我试图比较3种不同的数组价格以便找到最低价格以便我可以决定将哪些数组值输入到数据库中,此时代码看起来像这样......

$array_a = array(
   "id"    => 398,
   "price" => 100 
);

$array_b = array(
   "id"    => 387,
   "price" => 60
);

$array_c = array(
   "id"    => 127,
   "price" => 50
);

if($array_a && $array_b && $array_c){
   $newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
   array_keys($newArr, min($newArr));
   print_r($newArr)."\n"; 
}

上面的代码没有返回具有最低价格的数组的正确索引,在这种情况下是2(array_c),找出最低值的键的正确方法。

同样最好的方法是确保只将数字与min()函数进行比较而不是字符串?

4 个答案:

答案 0 :(得分:1)

您可以通过以下方式自动化它:

$newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
asort($newArr, SORT_NUMERIC);
echo "Minimum: ".reset($newArr).", given in array #".key($newArr);

我不太确定如何回答你的结束问题 - 如果值实际上没有输入数字会怎么样?

更新:以下是排除非数字值的一种方法:

asort($newArr, SORT_NUMERIC);
while (!is_numeric(current($newArr))) next($newArr);
if (key($newArr) === null) {
    echo "No valid elements found";
}
else {
    echo "Minimum: ".current($newArr).", given in array #".key($newArr);
}

答案 1 :(得分:1)

你可以这样做:

$newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
sort($newArr);
$lowest = array_shift($newArr);

答案 2 :(得分:1)

试试这个:

$keys = array_keys($your_array);
asort($keys);
$min = $keys[0];
echo "Smallest index: ".$min;

答案 3 :(得分:1)

<?php
$array_a = array(
   "id"    => 398,
   "price" => 100 
);

$array_b = array(
   "id"    => 387,
   "price" => 60
);

$array_c = array(
   "id"    => 127,
   "price" => 50
);

if($array_a && $array_b && $array_c){
   $newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
   $key_min = array_keys($newArr, min($newArr));
   echo $key_min[0];

}
?>