In other words - lets say I have variable $a, if I use that as a key in different arrays would the value of $a be used (and copied) for each array as key or the pointer in memory will be used, that is basically my question?

Here comes the differences between PHP >=5.4 & PHP 7 and it depends on your environment. I'm not a PHP expert and my answer might be wrong but I have been programming extensions for PHP for quite a while and I am trying to answer your question based on my observation.

In zend_hash.c, the source of PHP 5.6.26, we could find this function:

So the concept of "interned string" came into existence from PHP 5.4. The string will always be copied before and in PHP 5.3. But since PHP <=5.3 is really outdated, I'd like to leave it out from this answer. And what about PHP 5.4-5.6? In zend_string.h:

So in PHP 5.4-5.6 without Zend Thread Safety, if the string has already been in the memory of this specific process, a reference would be used; however with ZTS, it will always be copied. (FYI, we seldom need ZTS in Linux).

To clarify, the $uniqueKey string in this case will not be interned, because it is created at runtime. Interning only applies to compile-time known (literal) strings.
@NikiC thanks for clarification

Wow, so PHP 7 actually introduces a new, amazing zend_string structure and it works around with RC and garbage collection! This is far more effective than that in PHP 5.6!

In a nutshell, if you use an existed string as the key in a hash table, and of course you keep it unchanged, in PHP <=5.3, very likely to be copied; in PHP 5.4 without ZTS, referenced; in PHP 5.4 with ZTS, copied; in PHP 7, referenced.