$this->Js->object() が、私が与えた配列を自動ソートすることに気づいたなら、私は驚きました。私は CakePHP 2.0 を使用してコーディングしています ここに私が得たものがあります:
私のコントローラーで:
$arrayOfPlotPoints = array();
//....
foreach($allFilenames as $key => $value){
$arrayOfPlotPoints[$key]['latitude'] = $value['TransactionDetail']['latitude'];
$arrayOfPlotPoints[$key]['longitude'] = $value['TransactionDetail']['longtitude'];
$arrayOfPlotPoints[$key]['signal_level'] = $value['TransactionDetail']['signal_level'];
$arrayOfPlotPoints[$key]['snr_level'] = $value['TransactionDetail']['snr_level'];
$color = $this->ColorSchema->find('first',array('fields'=>array('ColorSchema.color'),'conditions' =>array('category' => $category, 'upper_bound >=' => $value['TransactionDetail']['snr_level'], 'lower_bound <='=> $value['TransactionDetail']['snr_level'])));
$arrayOfPlotPoints[$key]['color'] = $color['ColorSchema']['color'];
}
//..
私のビューファイルで:
var test = <?php echo $this->Js->object($arrayOfPlotPoints); ?>;
for (var key in test) {
var obj = test[key];
for (var prop in obj) {
color.push(obj['color']);
latitude.push(obj['latitude']);
longitude.push(obj['longitude']);
}
}
最初に $arrayOfPlotPoints の値をデバッグし、値をそのままコピーしました。そして、JavaScript の for ループでフェッチされている値を警告しようとしました。それらの発生は、コントローラーで以前にデバッグしたものとは異なります。あたかも値に従ってソートされているかのようです。これは、JS ヘルパーがコンテンツを自動ソートするということですか? その場合、オートソートを無効にすることはできますか?