首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP多维数组增量复制

PHP多维数组增量复制
EN

Stack Overflow用户
提问于 2014-12-11 14:29:32
回答 3查看 426关注 0票数 0

我有一个包含产品的数组,在其中我想搜索重复的名称并增加重复的值。

我尝试创建一个空数组,并将所有的标题值键推到它,然后我发现了array_count_values中每个键值有多少重复项。

这是我的阵列;

代码语言:javascript
复制
$products=Array
(
    [0] => Array
        (
            [0] => 'Intel I3',
            [1] => 146,
            [2] => 'intel-i3'
        ),

    [1] => Array
        (
            [0] => 'Intel I3',
            [1] => 146,
            [2] => 'intel-i3'
        ),
    [2] => Array
        (
            [0] => 'Intel I3',
            [1] => 250,
            [2] => 'intel-i3'
        ),
    [3] => Array
        (
            [0] => 'AMD graphic',
            [1] => 146,
            [2] => 'amd-graphic'
        )
);

我希望这个结果增加1。

我怎样才能得到这个结果?

代码语言:javascript
复制
$products=Array
(
    [0] => Array
        (
            [0] => 'Intel I3',
            [1] => 146,
            [2] => 'intel-i3'
        ),

    [1] => Array
        (
            [0] => 'Intel I3_1',
            [1] => 146,
            [2] => 'intel-i3'
        ),
    [2] => Array
        (
            [0] => 'Intel I3_2',
            [1] => 250,
            [2] => 'intel-i3'
        ),
    [3] => Array
        (
            [0] => 'AMD graphic',
            [1] => 146,
            [2] => 'amd-graphic'
        )
);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-11 14:35:03

代码语言:javascript
复制
$titleCounts = array();

foreach ($products as &$product) {

    if (!isset($titleCounts[$product[0]])) {
        $titleCounts[$product[0]] = 0;
    } else {
        $titleCounts[$product[0]]++;
        $product[0] = ($product[0].'_'.$titleCounts[$product[0]]);
    }
}

你可以在这里看到这个作品:

http://ideone.com/4xoGgP

票数 3
EN

Stack Overflow用户

发布于 2014-12-11 14:36:29

代码语言:javascript
复制
<?php
$counter = [];
$i = 0;
foreach($products as $product){
    $counter[] = $product[2];
    $vals = array_count_values($counter);
    $current_number = $vals[$product[2]];
    if($current_number)
        $products[$i][0] .= '_'.$current_number;
    $i++;
}

那应该行。

票数 0
EN

Stack Overflow用户

发布于 2014-12-11 14:42:30

测试过了它就能用了。

代码语言:javascript
复制
$tmpArray = array();

foreach ($products as &$product) {
    $name = $product[0];
    if (array_key_exists($name, $tmpArray)) {
        $product[0] = $name . '_' . $tmpArray[$name];
        $tmpArray[$name]++;
    } else {
        $tmpArray[$name] = 1;
    }
}
unset($product);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27425202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档