処理分岐フラグ付きの連想配列を用いた任意次元の任意長配列
自分のためのアイディアのメモ。多分、世界でn番目の車輪の再発明
まず1次元
要素データに重複のない配列データを格納するために、連想配列を実装したプログラミング言語で、連想配列の[キーデータ]=>[値データ]に[添字]⇒[要素データ]ではなく、わざと[要素データ]=>[何か(例えば true とか)]と「キー」の部分に要素データを格納する(「添字データ」と「添字という考え方」は捨てる*1)。データへのアクセスは配列長によらない foreach ループを用いる。*2
多次元化
さらにそのプログラミング言語が連想配列の「値」の部分に連想配列を代入できる場合に、この構成の連想配列の「値」の部分に、同じように[要素データ]=>[何か]で構成された連想配列を代入する。これで任意次元の任意長の配列のできあがり。(ただのネストしたハッシュ配列に過ぎないけど。)
配列の全要素へのアクセスは foreach ループを関数化して、再起呼出をかける:PHPなら多分、こんな感じ
function readArray ( $array ) { foreach ( $array as $key => $value ) { if ( is_array($value) ) { readArray ( $value ); } else { [something to do using $key and $value] } } }
データ毎の処理の設定
末端の[要素データ]=>[何か]の[何か]の部分に値を設定して、その値によって処理を分岐することができそうである。