0

私はこのような配列を持っています:

> 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
>>>            )
> )

二次配列の値を最初の配列に挿入しました。

4

1 に答える 1

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);
于 2012-04-17T00:55:29.760 に答える