从带有后缀或前缀PHP的数组键中提取变量

时间:2012-07-21 00:43:55

标签: php arrays foreach

我从数组中提取变量并且工作正常,但恰好在同一个文件中我有来自不同类别的新闻项目与具有相同键名的数组,因此它们混合起来并且第一次设置加载接管,我需要什么是变量的前缀或后缀,所以我可以区分彼此

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;
    }

}

在foreach中为3个不同的类别调用

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;
}

任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分: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;
}