###前提・実現したいこと
CakePHPでWebシステムを作っていますが、基本的なPHPの文法に関する部分で質問があります。
コントローラー内に宣言したローカル関数で、
引数に指定したidをキーに、DBよりデータを取得します。
取得されたデータをstaticで定義した配列にストックしていくという処理を行いたいです。
###発生している問題・エラーメッセージ
最終的にストックしたIDを呼び出し元の変数に入れ確認するとNullになっています。
ストックされたIDを受け取りたいのですが、なぜNullになるのかがわかりません。
###該当のソースコード
PHP
1<?PHP 2class TestController extends AppController 3{ 4 ... 5 6 public function test() { 7 8 $ids = array(1); 9 10 // ここがNullになってしまう 11 $getlist = $this->getList( $ids ); 12 13 } 14 15 16function getList($ids) { 17 18 static $stocker_ids = array(); 19 20 $links = $this->Link->find('all', 21 array( 22 'conditions' => array('bookmark_id' => $ids), 23 'fields' => Array('url') 24 )); 25 26 $stocker_ids = array_unique(array_merge($stocker_ids, $ids)); 27 28 $this->log('★★ID収集★★', LOG_DEBUG); 29 $this->log($stocker_ids, LOG_DEBUG); 30 31 $getlist = array(); 32 foreach($links as $link) { 33 $contentid = $link['Link']['url']; 34 if (!in_array($contentid, $stocker_ids, true) && 35 !in_array($contentid, $getlist, true)) { 36 $getlist[] = $contentid; 37 } 38 } 39 } 40 41 if (count($getlist) > 0) { 42 $this->log('★★再帰呼出し前のリスト★★', LOG_DEBUG); 43 $this->log($getlist, LOG_DEBUG); 44 $this->getContentsList($getlist); 45 } else { 46 $this->log('★★リターンするリスト★★', LOG_DEBUG); 47 $this->log($stocker_ids, LOG_DEBUG); 48 // ここで確認するとIDの配列はストックできている 49 return $stocker_ids; 50 } 51 }
###試したこと
getList関数をpublicで宣言してみました。結果はかわりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
PHP 5.3.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/07 04:59 編集