繁体   English   中英

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

[英]compare values from multidimensional array and add key to array

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++;
                }

            }
        }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM