регулярное выражение для массива для переименования ключей - PullRequest
0 голосов
/ 14 декабря 2009

Hay all, у меня есть массив

Array ([near_prescription] => Array (
    [go_to] => inter_selection 
    [distance_right_sph] => 0.00
    [balance_right] => 
    [distance_right_cyl] => 0.00 
    [distance_right_axis] => 
    [distance_left_sph] => 0.00 
    [balance_left] => 
    [distance_left_cyl] => 0.00 
    [distance_left_axis] => 
    )
)

Я хочу назвать все экземпляры от «расстояния» до «рядом».

есть идеи?

Ответы [ 3 ]

4 голосов
/ 14 декабря 2009

Достаточно простого цикла foreach:

foreach ($array as $key => $value)
{
    # If the key name contains 'distance_'
    if (strpos($key, 'distance_') !== false)
    {
        # Create a new, renamed, key. Then assign it the value from before
        $array[str_replace('distance_', 'near_', $key)] = $value;

        # Destroy the old key/value pair
        unset($array[$key]);
    }
}
2 голосов
/ 14 декабря 2009

Вот решение, которое не использует циклы:

$array = json_decode(str_replace('distance_', 'near_', json_encode($array)), true);

В качестве дополнительного бонуса он обрабатывает многомерные массивы, единственным недостатком является то, что если какое-либо из значений массива содержит «distance_», оно также будет преобразовано, но почему-то я не думаю, что это проблема для вы.

2 голосов
/ 14 декабря 2009
foreach($_GET as $key=>$val){
    $DATA[str_replace("distance", "near", $key)] = $val;
}

это то, что я искал.

...