Php 返回最小数组值索引
我试图比较3种不同的数组价格,以找到最低的,这样我就可以决定哪些数组值应该输入到数据库,代码看起来像这样的时刻Php 返回最小数组值索引,php,Php,我试图比较3种不同的数组价格,以找到最低的,这样我就可以决定哪些数组值应该输入到数据库,代码看起来像这样的时刻 $array_a = array( "id" => 398, "price" => 100 ); $array_b = array( "id" => 387, "price" => 60 ); $array_c = array( "id" => 127, "price" => 50 );
$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()函数进行比较,而不是与字符串进行比较?您可以通过以下方式实现自动化,例如:
$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);
}
例如,您可以通过以下方式实现自动化:
$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);
}
你可以做:
$newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
sort($newArr);
$lowest = array_shift($newArr);
你可以做:
$newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
sort($newArr);
$lowest = array_shift($newArr);
试试这个:
$keys = array_keys($your_array);
asort($keys);
$min = $keys[0];
echo "Smallest index: ".$min;
试试这个:
$keys = array_keys($your_array);
asort($keys);
$min = $keys[0];
echo "Smallest index: ".$min;
仔细查看文档示例echo min('hello',0)
会打印出“hello”,这是我不想要的@可以。但你仍然没有说出你想要什么。“我希望在搜索中根本不考虑非数值”是一个很好的答案。“我希望在搜索中根本不考虑非数值”仔细查看文档示例echo min('hello',0)
会打印出“hello”,这是我不想要的@可以。但你仍然没有说出你想要什么。“我希望在搜索中根本不考虑非数值”是一个很好的答案。“我希望在搜索中根本不考虑非数值”这将返回严格的标准:只有变量应该通过引用传递@Baba是的,有一个错误,它已经在我的答案中修复。这将返回严格的标准:只有变量应该通过引用传递
@Baba是的,有一个错误,它已经在我的答案中修复。