如何通过索引或值访问数组中的值?

时间:2014-04-28 17:09:52

标签: php arrays

我正在开发一个拥有这种代码的项目:

<?php
$dbsecteurs = dbselect("SELECT * FROM SUP_SECTEURS WHERE ID_SECTEUR > 1 ORDER BY NOM_SECTEUR ASC");
    foreach ($dbsecteurs as $dbsecteur) {
        echo $dbsecteur[0];
    }
}
?>

因此这些行由索引引导。有时,值会像$dbsecteur['id']一样被访问。我必须更新PHP的版本。这是dbselect函数:

function dbselect($strquery) {
    global $diag;
    $linkID = dbconnect("NORMAL");
    if($diag==1) {
        echo($strquery."<br>");
    }
    $result= oci_parse($linkID,$strquery);
}

我不知道为什么,但我有这个错误PHP Warning: Invalid argument supplied for foreach() in C:\inetpub\wwwroot\surtemps_dev\admin\login.php on line 147。所以我将函数的代码更改为:

function dbselect($strquery) {
    global $diag;
    $linkID = dbconnect("NORMAL");
    if($diag==1) {
        echo($strquery."<br>");
    }
    $stdid = oci_parse($linkID,$strquery);
    oci_execute($stdid);
    oci_fetch_all($stdid, $result, null, null, OCI_FETCHSTATEMENT_BY_ROW+OCI_NUM);
    return $result;
}

适用于索引但不是键访问的值。如果我删除OCI_NUM,我可以通过密钥访问,但我无法访问这两个。

有没有办法按密钥和索引访问同一个数组?

2 个答案:

答案 0 :(得分:0)

return $result;

将该行更改为:

return array_merge($result,array_values($result));

答案 1 :(得分:0)

最后,我找到了解决方案。这是新功能:

function dbselect($strquery) {
    global $diag;
    $linkID = dbconnect("NORMAL");
    if($diag==1) {
        echo($strquery."<br>");
    }
    $result = oci_parse($linkID,$strquery);
    oci_execute($result,OCI_DEFAULT);

    $matrix=array();
    $i=0;
    while ($row = oci_fetch_array($result)) {
        array_push($matrix,array());
        $matrix[$i]=$row;
        $i++;
    }

    dbclose($linkID);

    return $matrix;
}