我一直在使用程序性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'])");
但我一直收到错误,说数组值未定义。
我已经尝试过的事情(以及失败的事情)包括:
在类中定义变量为public,在类中设置它们的值,然后在类外调用它们......
public $amount = $response_array['amount'];
然后在我的程序中使用$ amount CALL ---我仍然得到错误,说$ amount未定义。
使用'return',如
return $response_array;
仍然是错误,表示值未定义。
我尝试将其余的代码嵌入到类中,只需将其复制/粘贴到json_decode之后...但由于某种原因,它似乎无法进行数据库调用和其他事情它需要做。
我一直在阅读__construct
,但我不确定它是否适用或在这种情况下如何使用它...
我想强调,当我在类中使用var_dump和echo时,我能够看到我想要的结果。我需要访问由类实例的json_decode OUTSIDE创建的数组。
任何建议都将不胜感激。感谢。
答案 0 :(得分:1)
假设您的FData::request
方法以此类结尾...
$response_array = json_decode($body, true);
return $response_array;
你这样称呼它......
$response_array = $fdata->request(...);
然后,您应该可以在调用范围中使用$response_array
。
额外说明;您应该将prepared statements与parameter binding一起使用,而不是将值直接注入SQL语句。