我有一个从MySQL数据库获取用户的函数,结果行可以是1行或多行。
让我烦恼的是,当我只想从db获得1个结果时,它会返回一个像这样的多维数组:
$result = array([0]=>array('foo'=>'bar'))
让我写出令人讨厌的代码,如:
$e = $result[0]['foo'] // instead of $result['foo']
我很确定很多人遇到过这种情况,我认为如果我能检查是否只有一行返回然后追加到$result
一个未编辑的版本就可以了,这样我就可以了当我只寻找一排时使用它。所以它就像这样:
$result = array(
[0] => array('foo'=>'bar'), // will keep the multi-dimentional version
'foo' => 'bar' // and append the ungrouped version of $result here
);
怎么做?
答案 0 :(得分:3)
if ( count($result) === 1)
{
$result = $result[0];
}
答案 1 :(得分:0)
听起来像你的API中的某些东西有点不对劲。
如果你有一个可以从数据库返回1到n
结果的函数,那么应该通过数组访问器(例如$result[0]['foo']
)访问。或者,您可以将结果存储在temp var中,例如:
$o = $result[0];
print_r($o['foo']);
执行您所问的问题是,您在特殊情况下更改了返回数据,这不仅会让那些可能使用您的代码的人感到困惑,而且非常容易出错,可能会让用户想知道为什么他们无法访问$result
的第0个元素。
返回单个元素的函数应返回单个元素。返回多个元素的函数应返回多个元素(并且在特殊情况下不更改其数据)。