我想在调用外部Api时从数组中获取WordPress上的每个Bank_name
。我使用了wp_remote_get()
。在对数组执行foreach
循环时,出现此错误:
为foreach()提供的参数无效。
要调试该错误,我尝试通过提供索引来回显第一个Bank_name
。我以两种方式做了完全相同的事情,但一种可行,而另一种却没有。唯一的区别是,一种方式使用wp_remote_get()
,而另一种方式使用响应作为数组而不调用任何api。
错误来自哪里?
这不起作用:
$request = wp_remote_get( 'https://tv-api-dev.azurewebsites.net/api/GetBankInfo' );
if( is_wp_error( $request ) ) {
return false;
}
$body = wp_remote_retrieve_body( $request );
$test = json_decode( $body, true );
print_r($test) ;
echo $test[0]["Bank_name"];
以下可以正常工作:
$someJSON = "[\r\n {\r\n \"Bank_id\": 1,\r\n \"Bank_name\": \"Aktia Pankki\"\r\n },\r\n {\r\n \"Bank_id\": 2,\r\n \"Bank_name\": \"Bigbank\"\r\n },\r\n {\r\n \"Bank_id\": 3,\r\n \"Bank_name\": \"POP Pankit\"\r\n },\r\n {\r\n \"Bank_id\": 4,\r\n \"Bank_name\": \"Bonum Pankki\"\r\n },\r\n {\r\n \"Bank_id\": 5,\r\n \"Bank_name\": \"Citibank\"\r\n },\r\n {\r\n \"Bank_id\": 6,\r\n \"Bank_name\": \"Danske Bank\"\r\n },\r\n {\r\n \"Bank_id\": 8,\r\n \"Bank_name\": \"DNB BANK ASA\"\r\n },\r\n {\r\n \"Bank_id\": 9,\r\n \"Bank_name\": \"Handelsbanken\"\r\n },\r\n {\r\n \"Bank_id\": 10,\r\n \"Bank_name\": \"Holvi\"\r\n },\r\n {\r\n \"Bank_id\": 11,\r\n \"Bank_name\": \"Nordea Pankki\"\r\n },\r\n {\r\n \"Bank_id\": 12,\r\n \"Bank_name\": \"OP Ryhmä\"\r\n },\r\n {\r\n \"Bank_id\": 13,\r\n \"Bank_name\": \"S-Pankki\"\r\n },\r\n {\r\n \"Bank_id\": 14,\r\n \"Bank_name\": \"Swedbank\"\r\n },\r\n {\r\n \"Bank_id\": 15,\r\n \"Bank_name\": \"Säästöpankki\"\r\n },\r\n {\r\n \"Bank_id\": 16,\r\n \"Bank_name\": \"Alandsbanken\"\r\n }\r\n]";
// Convert JSON string to Array
$someArray = json_decode($someJSON, true);
print_r($someArray); // Dump all data of the Array
echo $someArray[0]["Bank_name"]; // Access Array data
echo $someArray[0]["Bank_id"]; // Access Array data
从第二种方法中,我得到输出Aktia Pankki1,这也是我从第一种方法中得到的结果,但是我得到了以下消息:
警告:输入中非法的字符串偏移量'Bank_name' C:\ xampp \ htdocs \ wpsummerproject \ wp-content \ themes \ astra \ functions.php 在第181行
答案 0 :(得分:0)
我尝试了来自给定URL的数据。不知道为什么,但是在第一个WEEK()
中,获得的值是带有子项的单个JSON对象。当再次用counter=1&Id=4&type=2332&amount=3232&gstIncluded=3232&paymentMethod=2¬es=2332#fdsf&docId=0&ref=3232&isEdit=true
调用该值时,该值将作为数组获得。您可能想先检查源中的数据如何转换为JSON。似乎有问题。
json_decode()
答案 1 :(得分:0)
尝试:
$url = 'https://tv-api-dev.azurewebsites.net/api/GetBankInfo';
$response = wp_remote_get( esc_url_raw( $url ) );
/* Will result in $api_response being an array of data,
parsed from the JSON response of the API listed above */
$api_response = json_decode( wp_remote_retrieve_body( $response ), true );
这是来自codex.wordpress.org的示例 您的链接:https://tv-api-dev.azurewebsites.net/api/GetBankInfo进入有效的json。应该可以。
答案 2 :(得分:0)
这将适合您的情况,
$request = wp_remote_get( 'https://tv-api-dev.azurewebsites.net/api/GetBankInfo' );
if( is_wp_error( $request ) ) {
return false;
}
$body = wp_remote_retrieve_body( $request );
$test = json_decode( $body,true );
$test = json_decode($test,true);
echo $test[0]['Bank_name'];