せっかくだから

PHPが配列の@を捨て去ってしまったために失った柔軟性、そして貧弱さについて。
まずは何よりも、それが配列かどうかをチェックしなくてはいけないという点に尽きる。

$a = 1;
foreach($a AS $value){//ここでエラーがでる。
}

//正しくは
if(is_array($a)){
    foreach($a AS $value){}
}

これは、配列引数のあらゆるデータに言える事、だ。特にprintfなんかはこの問題に直面することも多い。
そして配列の結合を行おうとする時も。

//PHP
$a = array_merge($b, $c);

//Perl
@a = (@b, @c);

ハッシュと配列を同一視してしまったという点もPHPの言語としての機能の劣化が見られる。これについてはあまり多くを書かないが。
結局PHP批判で終わった気がするけれども、もちろん言語としてPHPに不可能なことがあるわけじゃない。たいていのことは出来る。Perlでも出来るし、Rubyでも出来るし、Javaだって出来る。アルゴリズムを実装するだけなら、ぜんぜん可能だ。
後は、目的を果たすための、力だ。