从另一个函数内部调用php函数

时间:2017-11-08 14:34:30

标签: php function

也许你们可以帮助我,我正在尝试这样做:

public function index()
{
    $r = array();
    //some code   
    echo json_encode($this->utf8ize($r));
}

public function utf8ize($d) {
   //some code
    return $d;
}

但我得到了#34;调用未定义的函数utf8ize()"错误

为什么?

编辑1:完整代码

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Solicitud extends MX_Controller {

public function __construct()
{
    /*
    parent::__construct();

    if(!$this->input->is_ajax_request())
    {
        show_404();
        exit();
    }
    else
    {
    */
        $this->load->model('Solicitud_model', 'Model');
    //}
}

public function index()
{
    $bandera = $this->input->post('bandera');
    $r = array();
    if ($bandera == 1){
        $result = $this->Model->getConsulta($this->session->session_facultad_apps);
        $r = array("data"    => $result,
            "success" => true,
            "bandera" => $bandera);
    }else if($bandera == 2)
    {
        $result = $this->Model->get($this->session->session_facultad_apps);
        $r = array("data"    => $result,
            "success" => true,
            "bandera" => $bandera);

    }else if ($bandera == 3){
        $result = $this->Model->getAsigna($this->session->session_facultad_apps);
        $r = array("data"    => $result,
            "success" => true,
            "bandera" => $bandera);
    }


    echo json_encode(utf8ize($r));
}

public function utf8ize($d) {
    if (is_array($d)) {
        foreach ($d as $k => $v) {
            $d[$k] = utf8ize($v);
        }
    } else if (is_string ($d)) {
        $d = iconv('UTF-8', 'ISO-8859-1', $d);
        return utf8_encode($d);
    }
    return $d;
}

3 个答案:

答案 0 :(得分:0)

this用于引用对象的当前实例。在您的情况下,您错过了对递归调用的引用。

简单解决方案 - 同时将$this->添加到内部utf8ize调用

echo json_encode($this->utf8ize($r));

...

public function utf8ize($d) {
    if (is_array($d)) {
        foreach ($d as $k => $v) {
            $d[$k] = $this->utf8ize($v);
        }
    } else if (is_string ($d)) {
        $d = iconv('UTF-8', 'ISO-8859-1', $d);
        return utf8_encode($d);
    }
    return $d;
}

答案 1 :(得分:0)

看起来你的代码是正确的。

但是我没有看到班级辩护,也没有看到你使用班级。

我在本地机器上创建了一个可以工作的类,当我调用测试类的方法时,该函数返回一个空数组。

<?php
class Test
{

    public function index()
    {
        $r = array();
        echo json_encode($this->utf8ize($r));
    }

    public function utf8ize($d)
    {
         //some code
         return $d;
    }
}

$test = new Test();
echo $test->index();

我希望这会有所帮助,如果不能随意伸手:)

答案 2 :(得分:0)

嗯,这不是最好的答案,但这段代码有效

public function index()
{
    $r = array();
    //some code
    }

    function utf8ize($d) {
        //some code
    }

    echo json_encode(utf8ize($r));
}

我不得不把这个功能放在原来的功能中

编辑:错误来自递归调用;不是第一个。

感谢所有人!