解析数组的最佳方式


Best way the parse an array

我想要一些建议来优化我的PHP代码,我使用的是API,有时它会返回一个结果结果数组,如下所示:

第一种可能性:

Array
(
    [collection] => Array
        (
            [links] => Array
                (
                   [id] => 1
                   [url] => www.google.fr
                )              
        )
)

或第二种可能性:

Array
(
    [collection] => Array
        (
            [links] => Array
                (
                   [0] => Array
                        (
                            [id] => 1
                            [url] => www.google.fr
                        )
                   [1] => Array
                        (
                            [id] => 2
                            [url] => www.google.fr
                        )
                   [2] => Array
                        (
                            [id] => 3
                            [url] => www.google.fr
                        )
                )              
        )
)

如何针对这种情况优化我的代码?

$url = '';
$nb_results = count($array['collection']['links']);
if($nb_results == 1){
    $url .= $array['collection']['links']['url'];
} else {
    foreach( $array['collection']['links'] as $r){
        $url .= $r['url'].'<br />';
    }
}

如果API只返回一个结果,则根据该结果生成一个数组并使用foreach。正因为如此,在创建$url变量时不需要使用if..else。看看这个代码:

// checking if links is array; if not - make array with one returned element from API
$data = isset($array['collection']['links'][0]) ? $array['collection']['links'] : array($array['collection']['links']);
foreach( $data as $r)
{
    $url .= $r['url'].'<br />';
}