2013-09-18 3 views
0

Я хочу создать или увеличить значение для ключа в массиве. Так, например, если у меня есть ключ «деньги», я могу увеличить его в массиве по заданному значению или создать его, если он еще не существует. В настоящее время я делаю то, что кажется длинным путем.Увеличение или создание числового значения в массиве

if(array_key_exists("money", $account_array)) { 
    $account_array["money"] = $account_array["money"] + $increase; 
} 
else { 
    $account_array["money"] = $increase; 
} 

ответ

2
if(!isset($account_array['money'])) { 
    $account_array['money'] = 0; 
} 

$account_array["money"] += $increase; 
  • использование isset(), если вы можете быть уверены в том, что массив делает либо содержать ненулевое значение, или что он не содержит ключ на всех.

  • использование a += b, которое было бы эквивалентно a = a + b

+0

Есть ли какие-либо преимущества IsSet над array_key_exists обособленно от него короче? – justinhj

+0

@justinhj У них большая разница! * array_key_exists() * проверяет, существует ли ключ, значение которого не должно быть нулевым. – ComFreek

+0

Ошибка в ответе рядом с «isset [', она должна быть круглой скобкой, например' isset ('. – Georgij

1

насчет

array_key_exists("money", $account_array) ? $account_array["money"] += $increase : $account_array["money"] = $increase; 
0

Вы можете тройная заявление и компресс его к одной линии, но это ставит под угрозу читаемости:

$account_array["money"] = (array_key_exists("money", $account_array)) ? 
$account_array["money"] + $increase : $increase; 

See it live!

0

можно укоротить synatx немного, но в основном ваш метод является правильным

array_key_exists('money', $account_array) 
    ? $account_array["money"] += $increase 
    : $account_array["money"] = $increase; 
Смежные вопросы