2015-10-21 4 views
2

я столкнулся со следующей проблемой:PHP массив толчок в цикле не изменяет массив вне цикла

private function getMyThemeIds($collection){ 
    $result = []; 
    ... 
     foreach ($results as $doc) { 
     file_put_contents('2.txt', $doc->getUnid()); //everything is fine here 

     $result[] = $doc->getUnid(); 

     file_put_contents('3.txt', print_r($result,true)); //again, array is just fine, barely 4000 entries 
     } 

    file_put_contents('4.txt', print_r($result,true)); // but here we see what was in this array right after initialization. Nothing in this case. 
    return $result; 
    } 

Я пробовал разные подходы - изменили foreach к for, $result[] в array_push и т.д. безрезультатно. Кто-нибудь знает, в чем причина этого?

+0

где id ваши $ results ?? –

+0

Не уверен, но вы можете использовать как $ result = array(); для $ result = []; а декларация .. –

+0

Какова ваша версия 'php'? Если вы находитесь ниже 'php-5.4', чем изменение' $ result = []; 'to' $ result = array(); ' – Chayan

ответ

2

Вы можете инициализировать массив, используя 'массив(). Пожалуйста, следуйте ниже даного инициализировать массив со

$result = array(); 

После инициализации $ результат вы можете добавить в него данные. Вы можете ссылаться на следующую ссылку для инициализации массива: http://www.w3schools.com/php/func_array.asp

+0

Переменная была инициализирована '$ result = [];' как 'php-5.4' – Chayan

+0

Как-то ... Это сработало. Я могу поклясться, что я уже пробовал это! Хорошо, спасибо всем. – Moorindal

+0

array_push ($ result, $ doc-> getUnid()); – WisdmLabs

0

Подробнее см. На странице file_put_contents. Вы можете попробовать это.

private function getMyThemeIds($collection){ 
    $result = array(); 
    ... 
     foreach ($results as $doc) { 
     file_put_contents('2.txt', $doc->getUnid()); //everything is fine here 

     $result[] = $doc->getUnid(); 

     file_put_contents('3.txt', serialize($result)); //again, array is just fine, barely 4000 entries 
     } 

    file_put_contents('4.txt', serialize($result)); // but here we see what was in this array right after initialization. Nothing in this case. 
    return $result; 
    } 
Смежные вопросы