2013-06-04 40 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

相关问题