2017-06-21 54 views
-2

我有4個變量,每個都有一個整數分配給他們。任何人都可以讓我知道我如何獲得具有第二小值的變量的名稱?獲取具有第二低/最小值的變量的名稱與PHP

謝謝。

+5

訪問原始變量的代碼,你可以嘗試的你到目前爲止已經試過?在我們可以幫助之前,我們確實需要嘗試一下。 – MinistryofChaps

+0

將它們放入數組中,對數組進行排序,並拉第二個索引。 – chris85

+0

我已經搜索並試圖將它們放入數組中並對值進行排序。它返回的索引號不是變量的名稱。 –

回答

0

使用緊湊的變量設置爲一個陣列,該陣列排序,然後使用陣列片,以獲得第二值。
然後可以選擇回顯第二個值的鍵。

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

然後,你的價值觀翻轉陣列的鍵(如果你希望的數值,請跳過此線)

$array = array_flip($array); 

跳轉到下一個項目在Array在此之後(位置1 )通過使用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的整數值,您可以使用一個數組來存儲這些值。排序陣列並打印所述陣列的所述第二索引即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 for循環,多個數組和變量:)。認爲你的解決方案是最需要內存的解決方案,但它可能會工作。 – Bram