文字列と多次元配列の値に対して一括で処理できるメソッドで質問です。

下記メソッドで$hogeに多次元配列が渡ってきたと仮定しまして、
値が配列であれば再起処理でメソッドが再度呼び出されるそうです。

私の考えでは、再起処理で多次元配列の中の値が配列ではなかったときは、
Aの文字列の方に流れるのではと思っていたのですが、実際は@に流れるようです。

多次元配列の中の文字列にis_array()を掛けてもfalseなのですが、どういった理由で
@に流れるのでしょうか?

function test($hoge) {
 // 配列の場合
 if (is_array($hoge)) {
  foreach ($hoge as $key => $value) {
   // 再起処理
   if (is_array($value)) {
    test($value);
   }
   // @配列の中の値が配列でない場合
   else {
    ...
   }
  }
  return;
 }
 // A文字列の場合
 return;
}