在 PHP 中的关联数组中访问键值
Access key values within an associative array in PHP
我在使用关联数组和 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']
键,尽管我需要里面的值。
因为默认oci_fetch_array()使用OCI_BOTH
抓取模式;这意味着它 returns 具有关联索引和数字索引的数组。您可以使用...显式关闭数字索引
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 />';
}
}
我在使用关联数组和 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']
键,尽管我需要里面的值。
因为默认oci_fetch_array()使用OCI_BOTH
抓取模式;这意味着它 returns 具有关联索引和数字索引的数组。您可以使用...显式关闭数字索引
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 />';
}
}