2017-03-11 123 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以獲取更多信息的結果。

相關問題