需要通过类外部的json_decode访问类内创建的关联数组数据

时间:2013-12-16 02:13:26

标签: php arrays class json

我一直在使用程序性PHP很长一段时间但仍在学习OOP。我能够在线找到一些类的代码,我可以调用类的新实例,并在字符串上使用var_dump,让它将JSON数据打印到网页上。我可以查看var_dump的结果,看看它正在返回我想要的内容。然后,我可以在同一个字符串上使用json_decode将其转换为关联数组,然后我可以在类中回显值。问题是,我需要在更多的代码中使用数组值 - 我可以通过将其打印到网页来确认它,但我需要使用它...但我收到的错误表明数组未定义一旦我尝试在课外访问它。

我正在使用此行将数据转换为数组:

$response_array = json_decode($body, true);

我已经确认这可以在类中使用此代码打印一些数据:

echo $response_array['amount'];

它有效 - 我在网页上看到它。

我一直在使用此代码来创建类的新实例:

$fdata = new FData();
$fdata->request($order_total, $cc_exp, $cc_number, $cc_name, $order_id, $customer_id);

(名为'request'的函数被定义为类中的公共函数)

之后,我想获取$ response_array,以便将返回的数据存储到事务表中,如下所示:

    $r = mysqli_query($dbc, "CALL add_transaction($order_id, $response_array['transaction_type'], $response_array['amount'], $response_array['exact_resp_code'], $response_array['exact_message'], $response_array['bank_resp_code'], $response_array['bank_message'], $response_array['sequence_no'], $response_array['retrieval_ref_no'], $response_array['transaction_tag'], $response_array['authorization_num'])");

但我一直收到错误,说数组值未定义。

我已经尝试过的事情(以及失败的事情)包括:

  1. 在类中定义变量为public,在类中设置它们的值,然后在类外调用它们......

    public $amount = $response_array['amount'];
    

    然后在我的程序中使用$ amount CALL ---我仍然得到错误,说$ amount未定义。

  2. 使用'return',如

    return $response_array;
    

    仍然是错误,表示值未定义。

  3. 我尝试将其余的代码嵌入到类中,只需将其复制/粘贴到json_decode之后...但由于某种原因,它似乎无法进行数据库调用和其他事情它需要做。

  4. 我一直在阅读__construct,但我不确定它是否适用或在这种情况下如何使用它...

    我想强调,当我在类中使用var_dump和echo时,我能够看到我想要的结果。我需要访问由类实例的json_decode OUTSIDE创建的数组。

    任何建议都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

假设您的FData::request方法以此类结尾...

$response_array = json_decode($body, true);
return $response_array;

你这样称呼它......

$response_array = $fdata->request(...);

然后,您应该可以在调用范围中使用$response_array

额外说明;您应该将prepared statementsparameter binding一起使用,而不是将值直接注入SQL语句。