foreach ($array as &$item) works as expected. but that has nothing to do with reducing your loop. and i don’t see anything coplicated with using the key.
Keep in mind: there are no pointers in PHP, only references. Using the & symbol in front of a variable will tell PHP it should be passed as a reference.
In my opinion, the cleanest way to do this is using the array_map function, like @SamA74 pointed out.
The upside of your example would be that the double function can be reused. I suppose however that’s just a dummy example.
Edit - a few code style tips:
You can use [ ] as a shorthand for array().
You don’t have to use the closing ?> php tag in .php files. It’s actually recommended not to use it to avoid unforseen results, because things after the closing tag could mess stuff up.