2017-06-21 32 views
-2

4つの変数があり、それぞれに整数が割り当てられています。誰かが私に2番目に小さい値を持つ変数の名前をどのように得ることができるか教えてください。PHPで2番目に小さい/最小の値を持つ変数の名前を取得

ありがとうございました。

+5

から元の変数にアクセスする方法でコードを更新し、あなたの試みあなたはこれまでにしようとしていることはできますか?私たちが手伝ってくれる前に、実際に試してみる必要があります! – MinistryofChaps

+0

配列に入れ、配列をソートして、2番目のインデックスを取得します。 – chris85

+0

私はそれらを検索し、配列に入れて値をソートしようとしました。変数の名前ではなくインデックス番号を返します。 –

答えて

0

使用コンパクトアレイの第2のインデックスを印刷します。
オプションで、2番目の値のキーをエコーし​​ます。

$a = 2; 
$b = 7; 
$c = 6; 
$d = 1; 

$arr = compact('a', 'b', 'c', 'd'); 

asort($arr); 
$second = array_slice($arr,1,1); 
Echo "variable name " . Key($second) ."\n"; 

Echo "value " . ${key($second)}; 

https://3v4l.org/SVdCq

は、アレイ

+0

私は上記を試みましたが、エコーは何も戻っていません。 –

+0

どのコードを使用しましたか?コードがはっきりと動作するので、何か間違ったことがあったはずです – Andreas

+0

@ysalemoここをクリックしてください:https://3v4l.org/RpnPZ – Andreas

0

変数に名前を付けて構造化されていない限り、例えばprefix_xは実際の方法ではありません。あなたの質問に沿って、あなたはこのようなあなたの配列を作成することができ、よりにするために

$array = array(
    "a" => 3, 
    "b" => 2, 
    "c" => 1, 
    "d" => 6 
); 


// Sort the array descending but keep the keys. 
// http://php.net/manual/en/function.asort.php. 
asort($array); 

// Fetch the keys and get the second item (index 1). 
// This is the key you are looking for per your question. 
$second_key = array_keys($array)[1]; 

// Dumping the result to show it's the second lowest value. 
var_dump($array[$second_key]); // int(2). 

推奨方法は、次のように配列を使用しています。

$array = array(); 
$array['variable_one'] = $variable_one; 
$array['some_random_var'] = $some_random_var; 
$array['foo'] = $foo; 
$array['bar']= $bar; 

// Same code as above here. 
0

まず、すべての変数を配列に入れる必要があります。

$array = array(
'a' => 3, 
'b' => 6, 
'c' => 2, 
'd' => 1 
); 

またはこのよう:あなたはこのこの方法を行うことができます

$array['a'] = 3; 
$array['b'] = 6; 
// etc 

は、その後、あなたは自然の並べ替えを受け取るためにnatsort()でアイテムをソートする必要があります。

natsort($array); 

次に、あなたがアレイ(ポジション1の次の項目にジャンプした値(ケースでは、あなたが価値が、この行をスキップします)この後

$array = array_flip($array); 

とアレイ・キーを反転)を使ってnext();

echo next($array); 

はトータルでかなり短いスクリプトを作ります:

$array = array(
'a' => 3, 
'b' => 6, 
'c' => 2, 
'd' => 1 
); 

natsort($array); 
$array = array_flip($array); 
echo next($array); 
+0

これは変数の名前ではなく変数の値を返します。 –

+0

私はそれを今更新しました:) – Bernhard

0

代わりに4つの整数値のための4つの変数を使用しての、あなたはこれらの値を格納する配列を使用することができます。ソート配列とは、ある配列に変数を設定する配列をソートし、第2の値を取得する配列スライスを使用すること、すなわち1

<?php 

    $x = array(2,3,1,6); 

    $i = 0, $j = 0, $temp = 0; 

    for($i = 0; $i < 4; $i++){ 

     for($j=0; $j < 4 - $i; j++){ 

      if($x[$j] > $x[$j+1]){ 

       $temp = $x[$j]; 

       $x[$j] = $x[$j+1]; 

       $x[$j+1] = $temp; 
      } 
     } 
    } 

    for($j = 0; $j < 4; $j++){ 
     echo $x[$j]; 
    } 

    echo $x[1]; 

?> 
+0

それを行うのは非常に効果のない方法のようです。 3つのループ、複数の配列と変数:)。あなたのソリューションはメモリ集中型のソリューションだと思っていますが、うまくいくかもしれません。 – Bram

関連する問題