各月の総収入を含むこのタイプの配列があります。
Array ( [Total_Income_JAN] => 5000 [Total_Income_FEB] => 8000 [Total_Income_MAR] => 10000 )
次のようになるように、配列キーからプレフィックス部分を削除するにはどうすればよいですか。
Array ( [JAN] => 4321 [FEB] => 2364 [MAR] => 2364 )
これを試して:
<?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);
?>
まず、このソリューションはphp 5.3.x
以降のバージョン用です。
最初にキーである 2 つの配列と元の配列の 2 番目の値を組み合わせます。キーは を使用して変換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)
);
このようにしてみてください
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);
これを試して :
$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);