比较多维数组中的值并将键添加到数组中

时间:2018-02-20 14:29:05

标签: php arrays

Array
(
    [681074CRPAK4] => Array
        (
            [0] => 681074
            [1] => 681074CRPAK4
            [2] => 5602385431605
        )

    [681520XXXP6L] => Array
        (
            [0] => 681520
            [1] => 681520XXXP6L
            [2] => 5602385667394
        )

    [681530XXXP6V] => Array
        (
            [0] => 681530
            [1] => 681530XXXP6V
            [2] => 5602385667417
        )

    [681530XXXP6W] => Array
        (
            [0] => 681530
            [1] => 681530XXXP6W
            [2] => 5602385667424
        )
    [681530XXXP6X] => Array
        (
            [0] => 681530
            [1] => 681530XXXP6X
            [2] => 5602385667400
        )   
    )

我想比较每个数组的key[0]值。

如果它们相同,那么我想为每个带有id的数组添加一个新的key[3]

如果产品具有相同的key[0],那么这是一系列可变产品,然后是具有不同变体的相同产品。

如果key[0]与之前的版本不同,则添加id+1,在此示例中,我想最终得到:

Array
(
    [681074CRPAK4] => Array
        (
            [0] => 681074
            [1] => 681074CRPAK4
            [2] => 5602385431605
            [3] => 1
        )

    [681520XXXP6L] => Array
        (
            [0] => 681520
            [1] => 681520XXXP6L
            [2] => 5602385667394
            [3] => 2
        )

    [681530XXXP6V] => Array
        (
            [0] => 681530
            [1] => 681530XXXP6V
            [2] => 5602385667417
            [3] => 3
        )

    [681530XXXP6W] => Array
        (
            [0] => 681530
            [1] => 681530XXXP6W
            [2] => 5602385667424
            [3] => 3
        )
    [681530XXXP6X] => Array
        (
            [0] => 681530
            [1] => 681530XXXP6X
            [2] => 5602385667400
            [3] => 3
        )   

)
你能帮我解决这个问题吗?

我试过这个: 但是不起作用

foreach ($new as $current_key => $current_array) {

            foreach ($new as $search_key => $search_array) {

                    $ref1 = $current_array[0];      
                    $ref2 = $search_array[0];       

                if (($search_key != $current_key) and ($ref1 == $ref2)) {

                    $current_array[3] = $p_id_product;

                }
                else{
                    $current_array[3] = $p_id_product++;
                }

            }
        }

1 个答案:

答案 0 :(得分:0)

假设您已经按初始索引对数组进行了排序,那么至少它们被分组:

<?php
$data =
[
    [
        'foo',
        'spam',
        'bar',
    ],
    [
        'foo',
        'eggs',
    ],
    [
        'bar',
        'ham'
    ],
];

$output  = [];
$counter = 0;
$last    = null;
foreach($data as $k => $v) {
    if($last !== $v[0])
        $counter++;

    $v[3]       = $counter;
    $output[$k] = $v;
    $last       = $v[0];
}
var_export($output);

输出:

array (
  0 => 
  array (
    0 => 'foo',
    1 => 'spam',
    2 => 'bar',
    3 => 1,
  ),
  1 => 
  array (
    0 => 'foo',
    1 => 'eggs',
    3 => 1,
  ),
  2 => 
  array (
    0 => 'bar',
    1 => 'ham',
    3 => 2,
  ),
)