返回不在PHP中显示内容的类型数组


Returning type array not displaying contents in PHP

背景:

创建一个显示世界各国汇率的网站。

我有一个从XML文档中检索汇率和货币标题的函数:

function get_rate(SimpleXMLElement $xml, $x) {
    $currency['rate'] = $xml->channel->item[$x]->description;
    preg_match('/([0-9]+'.[0-9]+)/', $currency['rate'], $matches);
    $rate = $matches[0];
    $title['rate'] = $xml->channel->item[$x]->title;
    $title = explode('/', $title['rate']);
    $title = $title[0];
    return array(
            $currency[0],
            $title[1]
        );
//    echo $rate . ' ' . $title . '<br />';
}

如果我删除了返回数组,则函数下面的echo语句将按预期进行取消注释,但我正试图通过使用返回类型来改进此方法。此方法同时返回速率及其标题,因此假定返回数组是最佳解决方案。

我使用下面的函数来回显上面列出的函数的结果。

function get_currency_rate($feed) {
    $xml = new SimpleXmlElement(file_get_contents($feed));
    $rate = get_date($xml);
    echo $rate['date'] . '<br />';
    $vars = parse_url($feed, PHP_URL_QUERY);
    parse_str($vars);
    switch ($x) {
        case 15:
            get_rate($xml, 15); //EUR 15
            echo get_rate($xml, $x);  
            get_rate($xml, 56); //USD 56
            echo get_rate($xml, $x); 
            break;
        case 16:
            get_rate($xml, 16); //GBP 16
            get_rate($xml, 15); //EUR 15
            break;
        case 56: default :
            get_rate($xml, 15); // EUR 15
            get_rate($xml, 56); // USD 56
            break;
    }
}

我现在正在处理switch语句的case 15。情况15中的2个echo调用显示Array Array,这清楚地表明我没有正确访问数组变量。

我试着用以下内容替换case 15,我认为这在语法上更正确。这也像上面一样显示Array Array

case 15:
        get_rate($xml, 15); //EUR 15
        echo get_rate($xml, $currency[0]); 
        get_rate($xml, 56); //USD 56
        echo get_rate($xml, $title[1]); 
        break;

问题是因为我在get_rate函数中声明了不同的变量名吗?

当您回显非字符串、非数字类型时,您将只打印出对象类型。这是所有语言的标准行为。

它本质上是要求从对象中创建一个字符串,对于更复杂的类型,很难弄清楚如何将它们转换为字符串,所以它只输出类型。

为了获得所需的行为,您将需要回显数组中的字符串,并直接引用它们,如:

$rate = get_rate($xml, $x);
echo $rate[0] . ' '. $rate[1];

此外,作为一个附带的事实,要查看对象内部的所有内容,您还可以使用:

 var_dump(  get_rate($xml, $x));

这不会以最漂亮的方式格式化,但它将允许您"查看"对象。

使用var_dump(get_rate($xml,$x));,看看这是否有助于找出您拥有的变量。