こんにちは、これはスタックオーバーフローに関する私の最初の質問です。
アプリケーション用のテーブル構築クラスを作成しています。
以下のコードを使用してテーブルを構成することから始めます。
$table->setPage('page.rows','20');
$table->setPage('page.start','0');
$table->setTable('table.name','customertable');
$table->setTable('table.higlight','true');
$table->setColumn('column.name','id');
$table->setColumn('column.key','index');
$table->setColumn('column.heading','none');
$table->setColumn('column.issort','false');
$table->setColumn('column.islink','false');
$table->setColumn('column.ischeck','true');
$table->insertColumn();
$table->setColumn('column.name','jobref');
$table->setColumn('column.key','job-ref');
$table->setColumn('column.heading','RB Ref');
$table->setColumn('column.issort','true');
$table->setColumn('column.islink','true');
$table->setColumn('column.ischeck','false');
$table->insertColumn();
$table->setColumn('column.name','type');
$table->setColumn('column.key','type');
$table->setColumn('column.heading','Job Type');
$table->setColumn('column.issort','true');
$table->setColumn('column.islink','true');
$table->setColumn('column.ischeck','false');
$table->insertColumn();
値が何であるかは重要ではありません setColumn メソッドは、以下の関数呼び出しを介して値を一時配列に追加します。
public function setColumn($key,$value){
$this->colParamSet[$key] = $value;
}
次に、パラメーターリストを使い終わったら、使用します
$table->insertColumn();
以下のこのコードを呼び出します
public function insertColumn(){
$this->columnConfig[$this->colParamSet['column.name']] = $this->colParamSet;
print_r($this->columnConfig); #this is for test purposes not part of the final code
}
ここまでの説明がすべてうまくいったことを願っています 今....ここに出力があります
Array (
[id] => Array ( [column.name] => id [column.key] => index [column.heading] => none [column.issort] => false [column.islink] => false [column.ischeck] => true )
)
Array (
[id] => Array ( [column.name] => id [column.key] => index [column.heading] => none [column.issort] => false [column.islink] => false [column.ischeck] => true )
[jobref] => Array ( [column.name] => jobref [column.key] => job-ref [column.heading] => RB Ref [column.issort] => true [column.islink] => true [column.ischeck] => false )
)
Array (
[id] => Array ( [column.name] => id [column.key] => index [column.heading] => none [column.issort] => false [column.islink] => false [column.ischeck] => true )
[jobref] => Array ( [column.name] => jobref [column.key] => job-ref [column.heading] => RB Ref [column.issort] => true [column.islink] => true [column.ischeck] => false )
[type] => Array ( [column.name] => type [column.key] => type [column.heading] => Job Type [column.issort] => true [column.islink] => true [column.ischeck] => false )
)
各構成セットは、テーブル内の各列の設定であり、配列を指すキーは、テーブルのデータを含む assoc 配列からデータを取得するために使用される db 列名です。
この配列の繰り返しを取得する理由がわかりません。これを機能させる唯一の方法は、以下のコードを使用することです
public function insertColumn(){
$this->columnConfig = array();
$this->columnConfig[$this->colParamSet['column.name']] = $this->colParamSet;
$this->colParamSet = array();
print_r($this->columnConfig);
}
これは問題なく機能し、必要なものを出力しますが、配列を完全にクリアしてから、1つのセルを配列で挿入してから再度クリアしているように見えるため、なぜそれが機能するのか理解できませんが、そのように動作しませんそして、私はそれを理解していないので、本番環境でぐらつく不安定なハックを作成した可能性があるため、それに頼ることはできません。
この質問が理解できるようになったことを願っています。
前もって感謝します。
申し訳ありませんが、達成しようとしていた出力を表示するのを忘れていたので、以下に示します
Array (
[id] => Array ( [column.name] => id [column.key] => index [column.heading] => none [column.issort] => false [column.islink] => false [column.ischeck] => true )
[jobref] => Array ( [column.name] => jobref [column.key] => job-ref [column.heading] => RB Ref [column.issort] => true [column.islink] => true [column.ischeck] => false )
[type] => Array ( [column.name] => type [column.key] => type [column.heading] => Job Type [column.issort] => true [column.islink] => true [column.ischeck] => false )
)
比較のためのコード
この質問を大きくしすぎてトラブルに巻き込まれないことを願っていますが、比較のために以下のコードを作成しました
$temp = array();
$final = array();
function setconfig($key,$value){
global $temp;
$temp[$key] = $value;
}
function insertarray(){
global $final, $temp;
$final[$temp['config.name']] = $temp;
}
setconfig('config.name','bob');
setconfig('config.width','50');
setconfig('config.height','50');
setconfig('config.class','bobs-box');
insertarray();
setconfig('config.name','jon');
setconfig('config.width','150');
setconfig('config.height','150');
setconfig('config.class','jons-box');
insertarray();
setconfig('config.name','sue');
setconfig('config.width','150');
setconfig('config.height','150');
setconfig('config.class','sues-box');
insertarray();
print_r($final);
出力は以下の目的の出力です
Array (
[bob] => Array ( [config.name] => bob [config.width] => 50 [config.height] => 50 [config.class] => bobs-box )
[jon] => Array ( [config.name] => jon [config.width] => 150 [config.height] => 150 [config.class] => jons-box )
[sue] => Array ( [config.name] => sue [config.width] => 150 [config.height] => 150 [config.class] => sues-box )
)
オブジェクト内にある配列の違いと、同じように動作しない理由を誰か教えてもらえますか? または、それを忘れて、修正を使用して先に進む必要があります。