doulierong0334 2017-03-11 00:00 采纳率: 100%
浏览 104

php从数组中的相同键获取两个值

I want to keep both values with the same key, but rename the other one.

I tried array_merge() but it only keeps the last value.

Here is what the array looks like

[0] => Array
        (
            [process] => A
            [start] => 0
        )

[1] => Array
        (
            [process] => A
            [end] => 1
        )

[2] => Array
        (
            [process] => A
            [start] => 9
        )

[3] => Array
        (
            [process] => A
            [end] => 14
        )

I want to keep only the first value of the key end but, keep both values of start. To make it like:

Array
            (
                [process] => A
                [start] => 0
                [start2] => 9
                [end] => 1
            )
  • 写回答

2条回答 默认 最新

  • douxie9471 2017-03-11 00:12
    关注

    Here's how you do it in PHP. It's relatively simple, but there are a lot of checks that I had to manually add to the code to make it behave as you wanted.

    <?php
    
    $array = Array(Array
            (
                "process" => "A",
                "start" => 0
            ),Array
            (
                "process" => "A",
                "end" => 1
            ),Array
            (
                "process" => "A",
                "start" => 9
            ),Array
            (
                "process" => "A",
                "end" => 14
            ));
    
    $returnValue = Array();
    $returnValue["process"] = $array[0]["process"]; 
    $flagFirstEnd = false;
    $startI = 1;
    foreach ($array as $key => $value) {
        if (!$flagFirstEnd && isset($value["end"])) {
            $flagFirstEnd = true;
            $returnValue["end"] = $value["end"];
        }
        if (isset($value["start"])) {
            if ($startI == 1) {
                $returnValue["start"] = $value["start"];
            } else {
                $returnValue["start" . $startI] = $value["start"];
            }
            $startI++;
        }
    }
    print_r($returnValue);
    ?>
    
    评论

报告相同问题?