DBの値をカラムごとに配列で持つ独自ORMとかいう地獄
配列しか知らない時期に作っちゃったとかなのだろうか。。。(phpの案件)
c言語の授業習いたてのときに見かけるような
一般的にはこうあってほしい
というか素のmysql, mysqli, pdoはこう返してくる
なんで縦のものをわざわざ横にするようなことを。。。
code: 理想.php
$user$i->name
$user$i->address
code: 実際はこう.php
$user->namei
$user->addressi
直そうよ
フレームワーク部分なので、全モデル(相当)のクラスに影響する
移行予定のシステムで古いほうは、最低限しか触るなと言われている
いたるところ2次元配列の嵐
code: 添字と戦う
$user->colums = array("name", "address"); //DBカラムの一覧
$user->count = 3; //行の総数
for($i = 0; $i < count($user->columns); $i++) {
for(j = 0; j < $user->count; j++) {
$user->{$user->columnsi}j
}
foreach使おうといったけど、却下されてしまった。。。
code: 添字と戦う
$user->colums = array("name", "address"); //DBカラムの一覧
$user->count = 3; //行の総数
for(i = 0; i < $user->count; i++) {
foreach($user->columns as $column) {
$user->{$user->column}i;
}
}
添字をある数までは -1して、ある数以上はそのままみたいなことやってて、読み解くまでに時間がかかった
(元のコードとは変えてある。)
実際はレガシーPHPプロジェクトあるある - komagataのブログが割と当てはまる状態
code: 要するにarray.insert(2, array0)したい.php
for(i = 0; i < $user->count; i++) {
if(i < $point - 1)
index = i
else if(i > $point - 1)
index = i
$tmp = clone $user; //まさかのclone
if(i != $point - 1) {
$indexj = count($user->columns);
for($j = 0; $j < $indexj; $j++){
$user->{$user->colums$i}j = $tmp->{$user->colums$i}j
}
}else{
$indexj = count($user->columns);
for($j = 0; $j < $indexj; $j++){
$user->{$user->colums$i}j = $tmp->{$user->colums$i}0
}
}
}
配列の指定位置に新しく要素を挿入したいということだった
要するに array.insert insert (Array) - Rubyリファレンス
phpだと array_splice - メモっておこうか
code: array_spliceをつかう.php
foreach($user->columns as $column) {
array_splice($user->{$column}, $point, 0, $user->{$column}0);
}
なお、著しく不合理でなければ直さないって却下された。。。
こっちに供養