Php 如何访问只有一个元素或多个元素的数组的同一元素?

Php 如何访问只有一个元素或多个元素的数组的同一元素?,php,arrays,api,Php,Arrays,Api,我访问一个返回元素数组的API 如果只有一个元素,它将返回数组: Array { [response] => Array { [name] => Frank } } 但是,如果有多个结果,则会对每个结果进行更深层次的说明: Array { [response] => Array { [0] = > Array { [name] => Frank } [1] = &

我访问一个返回元素数组的API

如果只有一个元素,它将返回数组:

Array {

   [response] => Array {

      [name] => Frank

   }

}
但是,如果有多个结果,则会对每个结果进行更深层次的说明:

Array {

   [response] => Array {

      [0] = > Array {

         [name] => Frank

      }

      [1] = > Array {

         [name] => John

      }

   }

}
这相当令人沮丧,因为这意味着我必须首先检查是否只有一个元素或多个元素,然后分别对每个元素进行编码

是否有更好的解决方案可以自动处理两种情况(例如,一个结果与多个结果),并始终检索可用的名称?

(如果可以)调整原始API以始终返回带有索引键的数组,即使数组中只有一个项也是如此

否则,请在从API获取结果后添加此项

if(count($result['response'])==1) { $newResult['response'][0]=$result; }
else { $newResult=$result; }

您可以编写一个迭代器来处理您的特殊情况,也可以在其上迭代处理特殊情况:


特殊情况可能非常烦人,所以尽早处理它们,最好让它们消失。

这听起来像是一个非常烦人的API设计。您可以发布当前使用的代码示例吗?您可以修改从一个结果返回的数组,使其结构类似于多结果数组,这样您只需以1种方式处理响应。如何调整我不控制的外部API?我可以做一些预处理吗?如果是外部的,你无法控制它。所以你必须使用我提到的第二种方法。你能解释一下这行的作用吗:
isset($responses[0])| |$responses[0]=$responses?谢谢。@程序员:如果未设置
0
元素,请先用
$responses
创建一个数组。这就是那行中的表达式的作用。它处理的是你只有一个回答的特殊情况。@hakre回答得很好,尽管你似乎有一些拼写错误。@ComFreek,Wasbazi:谢谢你指出。如果您看到任何内容,请快速键入;)
foreach ($array['response'] as $responses)
{
    isset ($responses[0]) || $responses = array($responses);
    foreach ($repsonses as $response)
    {
        # standard processing code per each item.
    }
}