php Loss和foreach中的变量范围

php Loss和foreach中的变量范围,php,arrays,Php,Arrays,我有一些密码。当我尝试返回$language[0]=>全部正常时。但是当我试图返回$language[1]=>时,这个元素找不到。请告诉我如何更改此代码 function language($id) { $language = array(); $criteria = array("id" => $id); $fields = array('language'); $cursor = $col

我有一些密码。当我尝试返回$language[0]=>全部正常时。但是当我试图返回$language[1]=>时,这个元素找不到。请告诉我如何更改此代码

function language($id)
{
            $language = array();
            $criteria = array("id" => $id);
            $fields = array('language');

            $cursor = $collection->find($criteria, $fields);

            foreach ($cursor as $row) {
                $language[0] = $row['language'];

            }


            $criteria = array("id" => $language[0]);
            $fields = array('lang');

            $cursor2 = $collection->find($criteria, $fields);
            foreach ($cursor2 as $row) {
                $language[1] = $row['lang'];
            }
            return $language[1];
}

删除
[0]

$language[0] = $row['language'];  // overwritting subscript 0
所以它变成了

$language[] = $row['language']; // adding to index
另外,
$collection
也没有定义。

试着用foreach($cursor as$row){$language[]=$row['language']代替。您正在通过atm一次又一次地覆盖该值。在我看来,问题(其中一个问题…)是
$collection
,因为当前范围中没有定义该变量。