1

私はoscommerceを設定していて、各カテゴリに「最も人気のある」製品を追加することにしました。リスト内で最も人気のある製品をクエリして表示できるように、すべての子カテゴリをクエリする必要があります。

でも。

私はこの関数を持っていますが、カテゴリIDの配列をそこから取得できないようです。この問題はスコープに関係していますか?

 $children_ids = array(); 

function fetch_children($parent) {     

 $result = tep_db_query('SELECT `categories_id` FROM categories WHERE parent_id = "'.(int)$parent.'"'); 

   while($row = tep_db_fetch_array($result)) {


        $children_ids[] = (int)$row['categories_id'];


        fetch_children($row['categories_id']);
   }   
}

この時点では、$children_ids変数を使用してデータの配列にアクセスしようとはしていませんが、これには何も含まれていないようです!?私も試しましたarray_push();

何か案は?

4

1 に答える 1

1

関数内からグローバル変数を変更しようとしています。関数本体の内部からグローバル変数を宣言するか(ただし、これは強くお勧めします)、関数にchildren_idsの配列を返すようにすることができます。これは次のようになります(テストされていません)。

function fetch_children($parent) {

  $result = tep_db_query('SELECT categories_id FROM categories WHERE parent_id = "'.(int)$parent.'"');
  $list = array();
  while($row = tep_db_fetch_array($result)) {

    $list[] = (int)$row['categories_id'];


    $list = array_merge($list, fetch_children($row['categories_id']));
  }
  return $list;
}

$children_ids = fetch_children($root_node_id);
于 2011-03-30T15:23:43.667 に答える