2013-06-04 44 views
3

只是想知道如何容易地有兩個數組鍵相同的聯想值。我當前的代碼是:具有相同值的兩個數組鍵

$arraytest = array(
     'test1', 'test2' => 1, 
     'test3', 'test4' => 2, 
) 

我想要的陣列工作,所以下面的代碼返回:

$arraytest['test1'] returns 1 
$arraytest['test2'] returns 1 

感謝您的幫助,男

+3

這是不可能的,你不能對你有數組檢查使用相同的密鑰多個值這裏http://stackoverflow.com/問題/ 16871279/combine-array-in-php/16871376#16871376 – Fabio

+0

@Aquillo問題發生了變化,請檢查編輯 – Fabio

+0

@ mary13123123你測試過了嗎,var_dump($ arraytest);給出 array(4){[0] => string(5)「test1」[「test2」] => int(1)[1] => string(5)「test3」[「test4」] => int (2)} –

回答

0

你可以將一個變量的引用關聯到兩個數組鍵以模擬這種情況:

例如

$a = 2; 

$arraytest = array (
    'test1' => &$a, 
    'test2' => &$a 
); 

通過這種方式,爲 'test1的' 和 'test2的' 點$一個在內存中,你總是會有的 「真實」 價值$ A使用 '測試1' 和「測試2 '陣列。 但是記住使用數組的引用應該避免,因爲這可能會導致意外的程序行爲:但是

從php.net文檔

「請注意,這裏面數組引用是潛在的危險 。在右側引用 引用進行正常(非引用)賦值不會將左側變爲 引用,但是數組中的引用保留在這些正常的 賦值中。這也適用於數組爲通過價值傳遞 「。

更多詳細的=>What References Do (php.net)

-2
$arr = array(
    'test1' => 1, 
    'test2' => 1, 
    'test3' => 2, 
    'test4' => 2, 
); 
+0

這意味着什麼? – Fabio

+0

OP希望兩個數組鍵返回相同的值。這是一個例子,如何做到這一點。 – Lauris

-2
$arr = asign(array('test','test1'),'2'); 

//print_r($arr); 
/* 
Array 
(
    [test] => 2 
    [test1] => 2 
) 
*/ 
$arr = asign(array('test2','test3'),'3',$arr); 

print_r($arr); 
/* 
Array 
(
    [test] => 2 
    [test1] => 2 
    [test2] => 3 
    [test3] => 3 
) 
*/ 


function asign($key,$val,$arr=array()){ 

foreach($key AS $v){ 

$arr[$v]=$val; 
} 

return $arr; 
} 
-2
$a =array_merge(
     array_fill_keys(array('test','test2'), '1'), 
     array_fill_keys(array('test3','test4'), '2') 
    ); 

    print_r($a); 
/* 
    Array 
    (
     [test] => 1 
     [test2] => 1 
     [test3] => 2 
     [test4] => 2 
    ) 
*/ 
+0

請你停下來發布可怕的代碼? – user544262772

相關問題