2017-03-11 86 views
0

我想用同一个键保持两个值,但重命名另一个键。php从数组中得到同一个键的两个值

我试过array_merge()但它只保留最后一个值。

这里是阵列的样子

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

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

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

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

我想只保留关键end的第一个值,但是,保持start这两个值。为了使它像:

Array 
      (
       [process] => A 
       [start] => 0 
       [start2] => 9 
       [end] => 1 
      ) 
+0

这是不可能保留2值与一个名字 –

+0

你将不得不手动做 – Psi

回答

0

这是你如何在PHP中做到这一点。这是相对简单的,但有很多检查,我不得不手动添加到代码,以使其表现得如你所愿。

<?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); 
?> 
+0

我试过了,但它给了我四个相同的过程A数组 – aronccs

+0

你引用$ returnValue吗?如果你想修改数组对象,只需将$ array重新赋值给$ returnValue即可。 – Neil

0

Mabye功能array_merge_recursive将帮助你。

它不是你预期,但得到的结果一样

Array 
    (
     [process] => A 
     [start] => Array (
      0, 
      9 
     ) 
     [end] => 1 
    ) 

the documenation以获取更多信息的结果。

相关问题