如何在多维数组中取消组合元素?

时间:2011-08-30 02:22:07

标签: php codeigniter

我有一个从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
);

怎么做?

2 个答案:

答案 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个元素。

返回单个元素的函数应返回单个元素。返回多个元素的函数应返回多个元素(并且在特殊情况下不更改其数据)。