0

配列から変数を抽出して正常に動作していますが、同じファイルに同じキー名の配列を持つ異なるカテゴリのニュースアイテムがあるため、それらが混同され、最初のセットがロードされて引き継がれます。必要なのはプレフィックスです。または変数の接尾辞を使用して、互いに区別できるようにします

function get_extra_fields($item){
    $item->extra_fields = K2ModelItem::getItemExtraFields($item->extra_fields);
    foreach ( $item->extra_fields as $key => $extraField ){

        $getkey  = strtolower($extraField->name);
        $getkey  = str_replace(' ', '', $getkey);
        global $$getkey;
        $$getkey = $extraField->value;
    }

}

そしてそれは3つの異なるカテゴリーのためにforeach内で呼び出されます

foreach($get_gcat1 as $row => $item){
   get_extra_fields($item);
  echo $newstitle;
}

foreach($get_cat2 as $row => $item){
   get_extra_fields($item);
   echo $newstitle;
}

foreach($get_cat3 as $row => $item){
   get_extra_fields($item);
   echo $newstitle;
}

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

グローバル変数を作成するための奇妙な方法ですが、これがあなたが望むことをするかもしれない何かです:

function get_extra_fields($item, $prefix){
    $item->extra_fields = K2ModelItem::getItemExtraFields($item->extra_fields);
    foreach ( $item->extra_fields as $key => $extraField ){
        $getkey  = strtolower($extraField->name);
        $getkey  = str_replace(' ', '', $getkey);
        $GLOBALS[$prefix.$getkey] = $extraField->value;
    }
}


foreach($get_gcat1 as $row => $item){
  get_extra_fields($item, 'cat1_');
  echo $cat1_newstitle;
}

foreach($get_cat2 as $row => $item){
   get_extra_fields($item, 'cat2_');
   echo $cat2_newstitle;
}

foreach($get_cat3 as $row => $item){
   get_extra_fields($item, 'cat3_');
   echo $cat3_newstitle;
}
于 2012-07-21T00:52:28.430 に答える