Что является максимальным количеством ключей для массива в php

Используйте формат S и replace стандартные знаки +/- с требуемыми кодами

Вы можете пропустить NVL, если ваши числовые столбцы не обнуляются. [ 119]

Агрегированная функция SUM часто используется с PARTITION BY для различения счетов - см. Комментарий в запросе.

with bal as (
select 
  id, cr, dr,
  sum(nvl(cr,0) - nvl(dr,0)) over (/* PARTITION BY account key */ ORDER BY id) as balance
from accounting)
select 
 id, dr db,cr,
 replace(replace(to_char(balance,'999,999.99S'),'+','CR'),'-','DB') balance
from bal 
order by id;

        ID         DB         CR BALANCE                                    
---------- ---------- ---------- ----------------
         1       1000          0   1,000.00DB                                 
         2          0        200     800.00DB                                 
         3        500          0   1,300.00DB                                 
         4          0        200   1,100.00DB                                 
         5          0        200     900.00DB                                 
         6          0       1800     900.00CR

10
задан 3 revs, 2 users 100% 13 January 2009 в 20:05
поделиться

10 ответов

Darryl Hein,

Да, в журналах ошибок нет ничего. Я даже увеличил сообщение об ошибке и тем не менее ничто соответствующее для print_r ().

В ответ на Сойку: Я работал

echo count($lines);

и я получаю результат 105 546, но все еще print_r () только отображается 7280.

Слушая совет Rob Walker, который я циклично выполнил по всем элементам в массиве и он на самом деле содержал все результаты. Это приводит меня полагать, что проблема с print_r () самим вместо предела для выстраивания размера.

Другая странная вещь состоит в том, что я попробовал его на одном из моих серверов REHL, и результат состоял в том, как это должно быть. Теперь я не хочу обвинять это в Windows/IIS, но там Вы идете.

С вышеупомянутым в памяти я думаю, что этот вопрос должен быть повторно назван, поскольку это больше не относится к массивам, но print_r.

5
ответ дан 3 December 2019 в 21:24
поделиться

Править: Как Rob сказал, если Ваше приложение исчерпывает память, возможности - это, даже не доберется до print_r строка. Это - вид моей догадки также, но если это - проблема памяти, следующее могло бы помочь.

Смотрите в файле php.ini для этой строки и возможно увеличьте его до 16 или больше.

memory_limit = 8M

Если у Вас нет доступа к php.ini (например, если это происходило на общем сервере), можно зафиксировать его с a .htaccess файл как это

php_value memory_limit 16M

По-видимому, некоторые хосты не позволяют Вам делать это все же.

4
ответ дан 3 December 2019 в 21:24
поделиться

Действительно ли возможно, что существует свойственный предел на вывод от print_r. Я предложил бы искать первую и последнюю строку в файле, чтобы видеть, находятся ли они в массиве. При ударе предельной вставки памяти в массив, Вы никогда не добирались бы до print_r строки.

2
ответ дан 3 December 2019 в 21:24
поделиться

Два предложения:

  1. Считайте фактическое количество объектов в массиве и посмотрите, является ли массив корректным количеством записей (поэтому устранение или идентификация print_r() как преступник)

  2. Проверьте вход... шанс, что окончания строки в файле вызывают проблему? Например, есть ли соединение различных типов окончаний строки? См. страницу руководства для file() и примечание о auto_detect_line_endings установка также, хотя маловероятно, что это связано с окончаниями строки Mac.

2
ответ дан 3 December 2019 в 21:24
поделиться

Я полагаю, что это основано на объеме доступной памяти, как установлено в файле php.ini.

1
ответ дан 3 December 2019 в 21:24
поделиться

каждый раз, когда у меня закончилась память в PHP, я получил сообщение об ошибке, заявив тот факт. Так, я также сказал бы, что, если бы у Вас заканчивается память затем, сценарий не добрался бы до print_r()

попытайтесь включить auto_detect_line_endings в php.ini или при помощи
ini_set('auto_detect_line_endings', 1). Могут быть некоторые окончания строки, которые не понимают окна, и эта ini опция могла помочь. больше информации об этой ini опции может быть найдено здесь

1
ответ дан 3 December 2019 в 21:24
поделиться

Необходимо использовать count считать количество объектов в массиве, нет print_r. Что, если вывод этого большого массива был прерван из-за тайм-аутов или чего-то еще? Или некоторая ошибка/функция в print_r?

1
ответ дан 3 December 2019 в 21:24
поделиться

PHP's print_r функция действительно имеет ограничения. Однако даже при том, что Вы не "видите" распечатанного целого массива, это - все там. Я боролся с этой той же проблемой при печати больших объектов данных.

Это делает отладку трудного, если необходимо видеть целый массив, Вы могли бы создать цикл для печати каждой строки.

foreach ($FileLines as $Line) echo $Line;

Это должно позволить Вам видеть все строки без ограничения.

1
ответ дан 3 December 2019 в 21:24
поделиться

Я собираюсь соглашаться с Cory. Я думаю, что Ваш PHP, вероятно, настроен память по умолчанию 8 МБ, которые 4 МБ x 2 уже больше. Причина x2 состоит в том, потому что необходимо загрузить файл, затем для создания массива, у Вас должен быть файл в памяти снова. Я просто предполагаю, но это имело бы смысл.

Вы - верный PHP, не регистрирует ошибку?

0
ответ дан 3 December 2019 в 21:24
поделиться

Если Вы производите к чему-то как Internet Explorer, Вы могли бы хотеть удостовериться, что он может отобразить всю информацию, которую Вы пытаетесь поместить там. Я знаю, что существует предел странице HTML, но я не уверен, каково это.

0
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: