【问题标题】:How to find same name in array of array and combine their values in PHP?如何在数组数组中找到相同的名称并在 PHP 中组合它们的值?
【发布时间】:2018-10-04 07:10:51
【问题描述】:

我有这种类型的数组结构。

Array
(
    [0] => Array
        (
            [name] => Name
            [value] => Ram
        )

    [1] => Array
        (
            [name] => Gender
            [value] => Male
        )

    [2] => Array
        (
            [name] => Age
            [value] => 25
        )

    [3] => Array
        (
            [name] => Color
            [value] => Red
        )

    [4] => Array
        (
            [name] => Color
            [value] => Yellow
        )

    [5] => Array
        (
            [name] => Game
            [value] => Cricket
        )

    [6] => Array
        (
            [name] => Game
            [value] => Football
        )

    .
    .
    .
)

如何找到包含在整个数组中的相同名称并组合它们的值?在上面,ColorGame 名称相同,所以我需要数组中的颜色和游戏值。请注意,可能还有其他名称相似,不仅是 Color 和 Game。

Array
(
    [0] => Array
        (
            [name] => Name
            [value] => Ram
        )

    [1] => Array
        (
            [name] => Gender
            [value] => Male
        )

    [2] => Array
        (
            [name] => Age
            [value] => 25
        )

    [3] => Array
        (
            [name] => Color
            [value] => array( 'Red', 'Yellow' )
        )

    [4] => Array
        (
            [name] => Game
            [value] => array( 'Cricket', 'Football' )
        )
    .
    .
    .
)

【问题讨论】:

标签: php arrays


【解决方案1】:

试试下面的代码。并检查这是否对您有帮助。 注意:当您在这里提出问题时,请提供您到目前为止所做的代码,以供将来参考。在这个问题中,您似乎没有尝试解决它。​​

<?php
    // example code

    $newarray = [
            [
                "name" => "Name",
                "value" => "Ram"
            ],
            [
                "name" => "Gender",
                "value" => "Male"
            ],
            [
                "name" => "Age",
                "value" => 25
            ],
            [
                "name" => "Color",
                "value" => "Red"
            ],
            [
                "name" => "Color",
                "value" => "Yellow"
            ],
        ];

//make an array of combined values using value of name as key of that array
    $keyArray = [];
    foreach($newarray as $k=>$v)
    {
        if(array_key_exists($v['name'],$keyArray))
        {
            $valueArray = [];
            if(is_array($keyArray[$v['name']]))
            {
                $valueArray = $keyArray[$v['name']];
                $valueArray[] = $v['value'];
                $keyArray[$v['name']] = $valueArray;
            }
            else
            {
                $valueArray[] = $keyArray[$v['name']];
                $valueArray[] = $v['value'];
                $keyArray[$v['name']] = $valueArray;
            }
        }
        else
        {
            $keyArray[$v['name']] = $v['value'];
        }
    }
//now loop through the key values and make key as name and value as value and push into a wrapper array
    $finalArray = [];
    foreach ($keyArray as $k=>$v)
    {
        $finalArray[] = [
                "name"=>$k,
                "value"=>$v
            ];
    }

    print_r($finalArray);

【讨论】:

  • 但是又一次,它不适用于第二个同名。在上面例如它不适用于游戏。在游戏中我也得到了颜色的值。 `数组([名称] =>游戏[值] =>数组('红色','黄色','板球','足球'))`
  • 更新了答案。如果 key 存在,我们必须在每次进入块时清除 valueArray 数据。很抱歉告诉你这个地方不是为了完成你的代码。你必须自己解决一些问题。
猜你喜欢
  • 2022-11-20
  • 1970-01-01
  • 2012-11-18
  • 2018-02-22
  • 2017-07-02
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多