ご質問のリンク先のプログラムは、ツリー構造を1次元配列で表現しているので、2次元連想配列で処理することはできません。
http://php.s3.to/man/language.types.array.html
2分木を使うと並べ替えも簡単にできます。
http://www.phppro.jp/qa/1349?sort=desc
▽2
●
TransFreeBSD ●300ポイント ベストアンサー |
データ構造に不明な点があります。できればデータをあてはめた例を例示してください。
#というかデータ構造がはっきりできないから処理もかけないのだと思った。
データ構造が元の2次元配列の個々のレスアンカーの値が連想配列になった3次元配列(レス配列×レスアンカー配列×レスアンカーデータ連想配列)の場合
名前とレス文の持たせ方変えればまあ妥当?
<?php function removeFutureAnchor($array_data) { return array_map(function ($input) { return array_filter($input, function($values) { return $values['res_anchor'] < $values['res_no']; }); }, $array_data); }
データ構造がそれぞれのレスアンカーのデータを連想配列に収めたレスアンカーデータ連想配列の配列(レスアンカー配列)できている2次元配列(レスアンカー配列×レスアンカーデータ連想配列)の場合
場合によってはこれでも。DB的。でも名前とレス文が。
<?php function removeFutureAnchor($array_data) { return array_filter($array_data, function($values) { return $values['res_anchor'] < $values['res_no']; }); }
データ構造が元のレスアンカー配列を収めたレス配列の代わりに、レスアンカー配列を持つレスデータ連想配列の配列(レス配列)という3次元配列(レス配列×レスデータ連想配列×レスアンカー配列)の場合
クロージャが必要?というかこうする意味ある?
<?php function removeFutureAnchor($array_data) { return array_map(function ($input) { $res_no = $input['res_no']; return array_filter($input['res_anchor'], function($values) use($res_no) { return $values < $res_no; }); }, $array_data); }
というか、そもそものところで謎が。