2013-05-30 66 views
2

我有這種類型的數組的東西包含在每月的總收入:刪除陣列關鍵前綴

Array ([Total_Income_JAN] => 5000 [Total_Income_FEB] => 8000 [Total_Income_MAR] => 10000) 

我怎樣才能從數組鍵刪除前綴部分,使之成爲:

Array ([JAN] => 4321 [FEB] => 2364 [MAR] => 2364) 
+1

'foreach'? .... – zerkms

+0

@zerkms foreach數組索引 – user2389411

回答

3

試試這個:

<?php 

$list = Array("Total_Income_JAN" => 5000, "Total_Income_FEB" => 8000 , "Total_Income_MAR" => 10000); 

function removePrefix(array $input) { 

    $return = array(); 
    foreach ($input as $key => $value) { 
     if (strpos($key, 'Total_Income_') === 0) 
      $key = substr($key, 13); 

     if (is_array($value)) 
      $value = removePrefix($value); 

     $return[$key] = $value; 
    } 
    return $return; 
} 

$list = removePrefix($list); 
print_r($list); 

?> 

Try Demo>>

2

嘗試這樣

foreach($my_array as $key => $value) 
{ 
    $key2 = trim('Total_Income',$key); //or preg_replace('Total_income','',$key) 
    $my_array2[$key2] = $value; 
} 
print_r($my_array2); 
+0

Thanx for help bt對不起,這個問題開始downvote – user2389411

+0

,應該是'trim($ key,'Total_Income');''和'str_replace'可能更適合於刪除部分串。 –

+0

Nope trim('Total_Income',$ key)是正確的語法....看到這個http://php.net/manual/en/function.trim.php – Gautam3164

0

試試這個:

$old_array = Array ('Total_Income_JAN' => 5000, 'Total_Income_FEB' => 8000, 'Total_Income_MAR' => 10000); 
$new_array = array(); 
foreach($old_array as $key=>$val){ 
    $new_key = preg_replace('#Total_Income_(.+)#i','$1',$key); 
    $new_array[$new_key] = $val; 
} 
echo '<pre>';print_r($new_array); 
3

首先,這個解決方案是php 5.3.x和更高版本。

它結合了兩個數組,第一個是來自原始數組的鍵和第二個數值。鍵通過使用array_map進行轉換,因此使用str_replace刪除不需要的部分。

$my_array2 = array_combine(
    array_map(
    function($k) { return str_replace("Total_Income_", "", $k); }, 
    array_keys($my_array) 
), 
    array_values($my_array) 
);