2013-08-05 54 views
0

需要一種簡單的方法來完成我需要的功能,但我無法弄清楚。根據數組中的匹配值創建變量 - PHP

我有四個不同的隨機生成的變量,我需要「連接」並知道它們在表格中的位置。這張圖解釋得更好。

Table image

我已經分配的每個變量a 1或a 2和將它們添加到一個數組($var_array),所以我可以知道哪個匹配。例如,在上表中,可以將8n(var_array[0])賦值爲1.然後,11x,-15x和10x(分別爲var_array[1],var_array[2],var_array[3])將被賦值爲2.因此,print_r($var_array);會給...

Array ([0] => 1 [1] => 2 [2] => 2 [3] => 2)

我需要再找出匹配元素的「手機號碼」。因此,在這種情況下,我需要以某種方式識別單元格3,5和7作爲匹配,因爲我將在代碼中稍後使用它。我還需要擴展這個腳本來處理兩組不同的匹配元素。

我該怎麼做?謝謝。

編輯:下面是代碼的大背景下....

$variable_array = array('x', 'n', 'y', 'g'); 
    $var_array = array();  
    do { 
     $num_a = mt_rand(-20, 20); 
     $num_b = mt_rand(-20, 20); 
     $num_c = mt_rand(-20, 20); 
     $num_d = mt_rand(-20, 20); 

     $var_a = mt_rand(1, 2); 
     $var_b = mt_rand(1, 2); 
     $var_c = mt_rand(1, 2); 
     $var_d = mt_rand(1, 2); 

    } while ($num_a == 0 || $num_b == 0 || $num_c == 0 || $num_d == 0 || (($var_a == $var_b) && ($var_a == $var_c) && ($var_a == $var_d) && ($var_b == $var_c) && ($var_c == $var_d) && ($var_b == $var_d))); 

    do {   
     $variable_1 = $variable_array[array_rand($variable_array)]; 
     $variable_2 = $variable_array[array_rand($variable_array)]; 
    } while ($variable_1 == $variable_2); 

    $var_array[] = $var_a; 
    $var_array[] = $var_b; 
    $var_array[] = $var_c; 
    $var_array[] = $var_d; 
+1

有你認爲創建一個二維數組來保存值連同細胞位置? – Maximus2012

+0

你如何儲存餐桌? – Mike

+0

[請看看這個請](http://stackoverflow.com/questions/3145607/php-check-if-an-array-has-duplicates) – ODelibalta

回答

0
$arr = array(1, 2, 2, 2); 
$matching_cells = array(); 
foreach ($arr as $key => $value){ 
     $matching_cells[$value][] = $key*2 + 1; 
} 
print_r($matching_cells); 

輸出:

Array 
(
    [1] => Array 
     (
      [0] => 1 
     ) 

    [2] => Array 
     (
      [0] => 3 
      [1] => 5 
      [2] => 7 
     ) 

) 
相關問題