foreach 繰り返す場合と繰り返さない場合があるとき

<?php foreach((array)$others as $other){?>

これだけでいけた

foreachというのは配列の数だけ繰り返すということですので
$list[$key]; が1つの時には配列で返ってこないからエラーが出るということだと思います。
配列かどうかの判断はis_array()で判定させます。