realmadrid94_94
Новичок
Дата регистрации:
23.02.2016 21:44:41
Сообщений: 3
Здравствуйте, у меня есть строка длиной 5585552 символов. Мне нужно в цикле на каждом итерации вырезать 1 символ и добавить в массив.
$data = "String with a length of 5585552 characters";
$array = array();
for($i = 0; $i < strlen($data); $i++){
$array[] = substr($data, $i, strlen($data));
}
А скрипт пишет это: Fatal error: Allowed memory size of 1572864000 bytes exhausted (tried to allocate 180397 bytes) in Z:\home\zada4i.tj\www\209\index.php on line 39.
это и есть строка 39 $array[] = substr($data, $i, strlen($data));
Я уже изменил memory_limit в php.ini на 1024М
lll
Эксперт
Дата регистрации:
17.06.2016 22:32:32
Сообщений: 134
Привет! Попробуй так.
$data = "String with a length of 5585552 characters";
$array = array();
$len=strlen($data);
for($i = 0; $i <$len; $i++){
$array[] = substr($data, $i, $len);
}
realmadrid94_94
Новичок
Дата регистрации:
23.02.2016 21:44:41
Сообщений: 3
Привет! Ваш код и мой одинаковы. Просто Вы использовали переменную $len. Ваш код тоже не работает.
lll
Эксперт
Дата регистрации:
17.06.2016 22:32:32
Сообщений: 134
В моем коде функция вызывается один раз, а в Вашем несколько.
Я оба кода проверил, у меня все работает.
realmadrid94_94
Новичок
Дата регистрации:
23.02.2016 21:44:41
Сообщений: 3
А у Вас был строка длиною 5585552 символов и создался ли массив с 5585552 элементами?
lll
Эксперт
Дата регистрации:
17.06.2016 22:32:32
Сообщений: 134
Вот и не хватает памяти для такого скрипта!