访问PHP中关联数组中的键值

时间:2015-10-07 12:24:11

标签: php sql arrays oci

我遇到关联数组和SQL查询的问题。问题是我有一个查询,它的行存储在这样的数组中:

$query21 = "SELECT PROCESSO, DATAMSG, CATEGORIA_DESC, VALOR, CRITICO FROM TABLEX";
$result21 = oci_parse($connect, $query21);
oci_execute($result21);

$c1=array();
while($res21 = oci_fetch_array($result21))  {
    $c1[]=$res21;
}
print_r($c1);

此代码打印出:

Array
(
    [0] => Array
        (
            [0] => 1647306
            [PROCESSO] => 1647306
            [1] => 2015-04-27 23
            [DATAMSG] => 2015-04-27 23
            [2] => ECG_HR                        
            [CATEGORIA_DESC] => ECG_HR                        
            [3] => 59
            [VALOR] => 59
            [4] => 1
            [CRITICO] => 1
       )
)

问题是我不知道为什么它会重复两次结果。我期待这样的结果:

Array
(
    [0] => Array
        (
            [PROCESSO] => 1647306
            [DATAMSG] => 2015-04-27 23                       
            [CATEGORIA_DESC] => ECG_HR                        
            [VALOR] => 59
            [CRITICO] => 1
       )
)

另外,我如何访问[PROCESSO],...,[CRITICO]键值?我已经尝试但只能访问保存数组的$c1['0']键,但我需要内部的值。

1 个答案:

答案 0 :(得分:2)

因为默认情况下oci_fetch_array()使用OCI_BOTH抓取模式;这意味着它返回一个包含关联和数字索引的数组。您可以使用...

显式切换数字索引
oci_fetch_array($result21, OCI_ASSOC)

...或者只使用oci_fetch_assoc()

您也可以考虑完全删除while并在逐行模式下使用oci_fetch_all()

oci_fetch_all($result21, $c1, null, null, OCI_FETCHSTATEMENT_BY_ROW);

在任何一种情况下,您都可以使用与迭代任何其他数据相同的技术迭代这些数组。例如:

foreach ($c1 as $row) {
  foreach ($row as $key => $value) {
    echo $key, ' is ', $value, '<br />';
  }
}