2011-08-22 83 views
0

我有以下代码:PHP的范围问题(引用另一个函数的内部函数)

function process_bulk_action() { 
     if (isset($_GET['locations'])) { 
       $location_ids = (is_array($_GET['locations'])) ? $_GET['locations'] : array($_GET['locations']); 
       global $wpdb; 

       switch ($this->current_action()) { 
        case 'edit': 
         bulk_edit($location_ids); 
        break; 
        case 'delete': 
         bulk_delete($locations_ids); 
        break; 
        default:break; 
       } 
     } 
    } 

    function bulk_delete($ids) { 
     foreach ($ids as $id) { 
      $id = absint($id); 
      $sql = "DELETE FROM wp_nc_location WHERE location_id = $id"; 
      $delete = $wpdb->query($sql); 
     } 
    } 

    function bulk_edit($ids) { 
     foreach ($ids as $id) { 
      $id = absint($id); 
      $sql = "SELECT name FROM wp_nc_location WHERE location_id = $id"; 
      $select = $wpdb->query($sql); 
      echo 'select: '. $select. ','; 
      print_r($select); 
     } 
    } 

当我尝试从switch语句调用其中bulk_edit或bulk_delete但是我收到以下错误消息以上:

Fatal error: Call to undefined function bulk_delete 

我知道我得到一些错误的范围,但我不知道放在哪里职能bulk_edit或bulk_delete ...

+2

你是否在这个类中? –

+1

@Matt它是从另一个函数中调用的,所以在调用之前都定义了,除非有代码或包含我们没有看到 –

+0

这是你所有的代码吗?您可能在某处存在缺失或附加支架。 @Matt - 函数可以在文件中对它们的实际引用下定义。该代码在执行前编译 – Cfreak

回答

3

我m在你使用$this->这些函数属于一个类的地方猜测?在这种情况下,你必须调用函数,如... $this->bulk_delete(..arguments..);

+0

感谢您的猜测,是的,工作! – redconservatory