0

我正在使用 FedEx 的 API 为他们的商店查找“下车”位置,然后我将使用地图 API (Google) 显示这些位置。

API 正在工作,但是我遇到了麻烦,因为我不熟悉面向对象的数组。

我想将数组中的值存储为唯一变量,以便可以将它们传递给我的地图 API。

我正在尝试完成以下操作:

<?php

// MY "IDEAL" solution - any other ideas welcome
// (yes, reading up on Object Oriented PHP is on the to-do list...)

$response = $client ->fedExLocator($request);

if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR')
{
    $response -> BusinessAddress -> StreetLines[0] = $location_0;
    $response -> BusinessAddress -> StreetLines[1] = $location_1;
    $response -> BusinessAddress -> StreetLines[2] = $location_2;
}

?>

工作联邦快递代码示例:

<?php

$response = $client ->fedExLocator($request);

if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR')
{
    echo 'Dropoff Locations<br>';
    echo '<table border="1"><tr><td>Streetline</td><td>City</td><td>State</td><td>Postal Code</td><td>Distance</td></tr>';
    foreach ($response -> DropoffLocations as $location)
    {
        if(is_array($response -> DropoffLocations))
        {
            echo '<tr>';
            echo '<td>'.$location -> BusinessAddress -> StreetLines. '</td>';
            echo '<td>'.$location -> BusinessAddress -> PostalCode. '</td>';
            echo '</tr>';
        }
        else
        {
            echo $location . Newline;
        }
    }
    echo '</table>';
}

?>
4

1 回答 1

1

好的,据我所知,该$response对象有两个成员:$response->HighestSeverity,它是一个字符串,以及$response->DropoffLocations,它是一个数组。$response->DropoffLocations只是一个数组,表面没有什么花哨的。您可以使用方括号(例如等)引用其条目$response->DropoffLocations[0],或者像他们所做的那样,使用foreach.

除了它是对象的成员这一事实之外,关于数组的唯一“面向对象”是它的条目是对象,而不是简单的值。

结果,您将索引放在错误的位置(并且DropoffLocations完全丢失)。而不是,例如,这个:

$response -> BusinessAddress -> StreetLines[0] = $location_0;

您应该为$response->DropoffLocations自己建立索引,然后从每个条目中提取成员变量,如下所示:

$response -> DropoffLocations[0] -> BusinessAddress -> StreetLines = $location_0;

不过,请注意@PeterGluck 的评论。您不太可能将该值设置为任何值。

于 2012-08-14T21:15:50.397 回答