在数组中搜索并插入值

时间:2012-04-16 20:01:05

标签: php multidimensional-array

我有一个像这样的数组:

> Array
> (
>>    [trilha] => 1
>>    [0] => Array
>>>        (
>>>            [trilha] => 1,5
>>>            )
> )

我希望与关键的TRILHA交叉,插入相关的值:

> Array
> (
>> [1] => A 
>> [1,5] => B
>> [1,5,4] => C
> )

有可能吗?

结果应该是:

> Array
> (
>>    [trilha] => 1
>>    [INSERTED] => A
>>    [0] => Array
>>>        (
>>>            [trilha] => 1,5
>>>            [INSERTED] => B
>>>            )
> )

我将辅助数组中的值插入到第一个数组中。

1 个答案:

答案 0 :(得分:0)

一些工作示例,基于堆栈的递归迭代和使用PHP变量别名的修改:

// to be modified:
$base = array(
    'trilha' => '1',
    array(
        'trilha' => '1,5',
    ),
);

// data for modification, binding value is key
$insert = Array(
    1 => 'A',
    '1,5' => 'B',
    '1,5,4' => 'C',
);

/*
 * stack based traversal and modifcation
 */
$stack = array();
$stack[] = &$base;
$first = 0;
while ($stack)
{
    $proc = & $stack[$first];
    unset($stack[$first++]);

    foreach ($proc as &$val) {
        if (is_array($val)) {
            $stack[] = &$val;
        }
    }

    if (!isset($proc['trilha'])) {
        continue;
    }
    $trilha = $proc['trilha'];
    if (!isset($insert[$trilha])) {
        continue;
    }
    $proc['INSERTED'] = $insert[$trilha];
}
unset($proc);

var_dump($base);