如何组合同一个关联数组中的两个值?

时间:2016-01-09 06:34:48

标签: php

我有一个数组,我需要从同一个数组中获取一个未分配给变量的值:

return ['a' => 1, 'b'=> 'a', 'c' => 2]; 

所以在这种情况下我需要' b'返回与' a'相同的值。这将是1

感谢您的帮助。

修改

我打算在b的值上运行一个函数,所以b的值略微不同于

return ['a' => 1, 'b'=> myFunction('a'), 'c' => 2];

3 个答案:

答案 0 :(得分:0)

你可以这样试试。

    foreach ($array as $key => $agent) {
     $array[$key]['agent_address_1'] = $agent['agent_company_1'] . ', ' .$agent['agent_address_1'];
     unset($array[$key]['agent_company_1']);
      }

答案 1 :(得分:0)

你想要的不清楚。 但我假设你试图让一个数组的'b'元素被赋予一个类似于同一个数组'a'元素值的值

如果这就是你所需要的,那就可以了。

<?php

$a = array('a' => 1, 'b' => null, 'c' => 2);

$a['b'] = myFunction($a, 'a');

function myFunction($a, $b)
{
    return $a[$b];
}

var_dump($a);

然后你可以返回数组,或者用它做你想做的事。

答案 2 :(得分:0)

也许像

<?php
function resolve(array $arr) {
    foreach($arr as &$v) {
        if ( isset($arr[$v])) {
            $v = $arr[$v];
        }   
    }
    return $arr;
}

function foo() {
    return resolve( ['a' => '5', 'b'=>'a', 'c' => '1'] );
}

var_export( foo() );

会做,打印

array (
  'a' => '5',
  'b' => '5',
  'c' => '1',
)

但请记住,resolve( ['b'=>'a', 'a' => 'c', 'c' => '1'] );将返回

array (
  'b' => 'c',
  'a' => '1',
  'c' => '1',
)

可以用while( isset($arr[$v])) {而不是if ( isset($arr[$v]) ) {来解决这个问题......但是很可能有更优雅/高效的方式来做到这一点)