Вот вам для PHP 5.5:
//исходные данные
$data[] = array("a" => 'art1', "b" => '10');
$data[] = array("a" => 'art2', "b" => '20');
$data[] = array("a" => 'art3', "b" => '30');
$data[] = array("a" => 'art4', "b" => '40');
$data[] = array("a" => 'art5', "b" => '50');
$data[] = array("a" => 'art6', "b" => '60');
//новые данные
$new_data[] = array("a" => 'art1', "b" => '15');
$new_data[] = array("a" => 'art2', "b" => '25');
$new_data[] = array("a" => 'art3', "b" => '35');
$new_data = array_column($new_data, 'b', 'a');
foreach($data as &$v) //для каждого элемента исходных данных
if (isset($new_data[$v["a"]])); //если найдены новые данные
$v["b"] = $new_data[$v["a"]]; //меняем значение
unset($new_data[$v["a"]]); //экономим память
}
unset($v);
print_r($data);
Реализация array_column() для предыдущих версий:
https://github.com/nazar-pc/Useful-PHP-Functions/blob/master/upf.php#L1219