foreach выводит последнею запись

117
24 мая 2019, 20:00

Всем привет, есть такой код:

    <?php
$poisk = 229786213;
$row = file('fren.txt');

foreach ($row as $key => $value) {
  $baza = json_decode(file_get_contents("https://api.vk.com/method/friends.get?user_id=".$value."&access_token=0$token&v=5.80"));
  if(isset($baza->response->items)){

  $array = $baza ->response->items;
  $key = array_search($poisk, $array); // $key = 2;
  if($key != FALSE){
             $fp = fopen("counter.txt", "a+");
                $mytext = "$value \r\n";
                    $test = fwrite($fp, $mytext); 
                      fclose($fp); 
                      echo "Good";
        }
      }
}

?>

Как сделать так, что foreach сохранил все значения, а не только последнее?

Answer 1

Я вижу несколько проблемных мест. 1) В row (то есть в fren.txt) может быть одна записью Сделайте echo $row 2) Содержимое $baza>response->items не установлено, кроме одного раза 3) array_search постоянно возвращает FALSE, кроме одного раза

Ваше решение при прочих равных тоже должно работать, но все-таки лучше открывать/закрывать файл за циклом.

$filename = "counter.txt";
$fp = fopen($filename, "a+");
if( $fp )
{
    foreach ($row as $key => $value) {
        //...
        $test = fwrite($fp, $mytext); 
        //...
    }
    else
    {
        echo "Не могу открыть файл";
    }
    fclose($fp); 
}
Answer 2

Блин, код "вырви глаз". PHP7 на дворе а вы пишете как в прошлом веке. Приведу пример как бы написал я:

foreach ($row as $key => $value) {
    $baza = json_decode(file_get_contents("https://..."),true);        # Возвращает массив а не объект
    if( !@array_search($poisk, $baza['response']['items']) ) continue;  # Пропускаем шаг цикла если ничего не найдено
    file_put_contents("counter.txt", "$value \r\n", FILE_APPEND);          # Дописываем в конец файла
    echo "Good";    
}
READ ALSO
PhpExcel как скопировать таблицу?

PhpExcel как скопировать таблицу?

Вывожу данные с xls файла на сайтиспользую библиотеку PHPExel

117
Современные форматы изображения JPEG 2000, JPEG XR и WebP

Современные форматы изображения JPEG 2000, JPEG XR и WebP

прошу помощи решить проблему при оптимизации сайта , гугл pagespeed просит "Используйте современные форматы изображений" (JPEG 2000, JPEG XR и WebP) попробовал...

130
Отправка form-data через CURL

Отправка form-data через CURL

Сервер принимает в обработку текстовом формате данные через form-dataНе могу понять как правильно эти данные отправить ? Через Postman всё работает...

147
QT restoreGeometry срабатывает слишком поздно

QT restoreGeometry срабатывает слишком поздно

Доброй ночи! У меня тут какая-то непонятная ситуацияНапример, в методе readMapSettings() в waterBody

121