я имею
$result = pg_query($dbconn, 'SELECT * FROM domain');
$d = pg_fetch_all($result);
var_dump($d);
И результат
array(2) {
[0]=>
array(2) {
["id"]=>
string(1) "1"["domainname"]=>
string(15) "stackoverflow.com"}
[1]=>
array(2) {
["id"]=>
string(1) "2"["domainname"]=>
string(13) "example.com"}
}
Здесь проблема в том, что id
s отображаются в виде строки, даже если они являются целыми числами. Как я могу получить их как целые числа автоматически?
Вам нужно вручную преобразовать строку в соответствующий числовой тип и убедиться, что число, представленное строкой, соответствует этому числовому типу.
Несмотря на то, что во многих случаях целое число, используемое внутренне в базе данных, может иметь такой же размер байта, что и целочисленный тип, используемый php, существует слишком много особых случаев (например, 64-битные номера базы данных возвращаются в 32-битный двоичный файл PHP и т. Д.) для любой конкретной политики автоматического преобразования, чтобы быть приемлемым.
В более общем плане, PostgreSQL имеет numeric
а также decimal
типы, которые имеют «до 131072 цифр до десятичной точки» и «до 16383 цифр после десятичной точки» (см. таблицу 8-2 [в документации PostgreSQL]). (https://www.postgresql.org/docs/9.1/static/datatype-numeric.html
Других решений пока нет …