添加新对密钥=>值从另一个数组到数组

时间:2014-03-24 22:53:03

标签: php arrays

我已尝试array_merge,根据相似的密钥array_push,各种[]组合合并它们,但我无法解决这个问题。我有两个数组,一个看起来像:

Array
(
    [650] => Array
        (
            [Kampan] => 
            [ZelvaUL] => 650
            [ZelvaOV] => 
            [OCS] => 
            [Rezim] => Ruční
        )

    [651] => Array
        (
            [Kampan] => 3003C_DSL_upsell_TV_SU
            [ZelvaUL] => 651
            [ZelvaOV] => 
            [OCS] => 21
            [Rezim] => IN
        )

    [652] => Array
        (
            [Kampan] => 
            [ZelvaUL] => 652
            [ZelvaOV] => 
            [OCS] => 22
            [Rezim] => IN
        )

并且,我想为650,651,652 ...子阵列中的每一个添加一个新密钥(我将调用密钥' Barva'),以及来自另一个数组的短值集(共10个)定期循环在该键下的每个子阵列中,使得第1和第11个值相同,第2个和第12个相同,依此类推,并且全部在同一个键下。 它看起来像是:

Array
(
    [650] => Array
        (
            [Kampan] => 
            [ZelvaUL] => 650
            [ZelvaOV] => 
            [OCS] => 
            [Rezim] => Ruční
            [Barva] => 1
        )

    [651] => Array
        (
            [Kampan] => 3003C_DSL_upsell_TV_SU
            [ZelvaUL] => 651
            [ZelvaOV] => 
            [OCS] => 21
            [Rezim] => IN
            [Barva] => 2
        )

    [652] => Array
        (
            [Kampan] => 
            [ZelvaUL] => 652
            [ZelvaOV] => 
            [OCS] => 22
            [Rezim] => IN
            [Barva] => 3
        )

...

    [660] => Array
        (
            [Kampan] => ...
            [ZelvaUL] => ...
            [ZelvaOV] => ...
            [OCS] => ...
            [Rezim] => ...
            [Barva] => 1
        )

说真的,我没有想法...... 谢谢你的帮助。

编辑: 这是我要添加的数组:

$camp_barvy = array(
  'background-color:#ffffff;color:#111111;',
  'background-color:#ffcc02;color:#111111;',
  'background-color:#ff7700;color:#ffffff;',
  'background-color:#ff2323;color:#ffffff;',
  'background-color:#ff00aa;color:#ffffff;',
  'background-color:#aa44ff;color:#ffffff;',
  'background-color:#1188ff;color:#ffffff;',
  'background-color:#11ddff;color:#111111;',
  'background-color:#00dd77;color:#111111;',
  'background-color:#119911;color:#ffffff;'
);

我想做一些大而广泛的条件格式化以及javascript和php如果语句使加载太慢,所以我想我将使格式部分我已经查看了基于我选择的值的数组期望的格式。 真的,它是最好的选择:)

1 个答案:

答案 0 :(得分:2)

您要做的是迭代“输入”数组中的每个值,并在其中插入从“数据”数组中获取的新值(您提到的那10个值)。当数据数组耗尽时,您希望循环回到它的开始并继续在“输入”数组元素中插入值。

所以你想要这样的东西:

foreach ($input as &$row) {
    $row['Brava'] = $next_item_from_data_array;
}

只留下了如何轻松迭代和循环数据数组的问题。

一种方便而现代的方法是使用内置的SPL iteratorsArrayIterator作为数据数组,并使用InfiniteIterator围绕它,以便循环回到根据需要自动启动。这样,您也不必假设有关数据数组的任何内容(例如,如果它是以数字方式编制索引)。

例如:

$dataIterator = new InfiniteIterator(new ArrayIterator($data));
$dataIterator->rewind();
foreach ($input as &$row) {
    $row['Brava'] = $dataIterator->current();
    $dataIterator->next();
}

// After iterating by reference (&$row) it is always a good idea to unset
// the reference so that you don't reuse it later on by mistake -- although
// this is not required and the program will work correctly without it.
unset($row);

<强> See it in action