2014-04-28 89 views
-1

我正在上都有這樣的代碼項目:如何通過索引或值訪問數組中的值?

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

所以線由指數readed。有時候,值可以像$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但我無法訪問兩者。

有沒有辦法通過鍵和索引訪問相同的數組?

回答

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; 
} 
0

是的。

return $result; 

更改該行:

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

首先將'OCI_NUM'更改爲'OCI_ASSOC'。 – AbraCadaver

+0

我嘗試了這些解決方案,但是我得到了相同的結果。我可以通過值或索引訪問數組,但不能同時訪問這兩個數組。 – Dougui