0

どの配列値をデータベースに入力するかを決定できるように、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

4 に答える 4

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);

最後の質問にどのように答えるかわかりません。値が実際に数値として入力されていない場合はどうなりますか?

更新:数値以外の値を除外する1つの方法は次のとおりです。

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);
}
于 2012-10-01T13:12:20.307 に答える
1

できるよ:

$newArr = array($array_a['price'], $array_b['price'], $array_c['price']);
sort($newArr);
$lowest = array_shift($newArr);
于 2012-10-01T13:14:16.500 に答える
1

これを試して:

$keys = array_keys($your_array);
asort($keys);
$min = $keys[0];
echo "Smallest index: ".$min;
于 2012-10-01T13:19:06.610 に答える
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];

}
?>
于 2012-10-01T13:19:53.583 に答える