Чтение нескольких значений из массива в цикле по каждому элементу PHP

Я хочу получать значения массива одно за другим и динамически добавлять в foreach

$tracker = array('1','2','3')

Я могу сделать это вручную, создав несколько foreach ниже

<?php
$tracker = array( '1' );
$hashx = array( $hash );
$info = $scraper->scrape( $hashx, $tracker );
foreach ($info as $key => $value) {
    $openseed = $value['seeders'];
}

$tracker = array( '2' );
$hashx = array( $hash );
$info = $scraper->scrape( $hashx, $tracker );
foreach ($info as $key => $value) {
    $pirateseed = $value['seeders'];
}

$tracker = array( '3' );
$hashx = array( $hash );
$info = $scraper->scrape( $hashx, $tracker );
foreach ($info as $key => $value) {
    $rarbgseed = $value['seeders']; 
}
?>

Но я хочу добавить все значения массива в foreach сразу динамически, а не создавать одно за другим вручную.

<?php
$tracker = array('1','2','3');

$hashx = array( $hash );
$info = $scraper->scrape( $hashx, $tracker );
foreach ($info as $key => $value) {
    $openseed = $value['seeders'];
}
?>

Приведенный выше код читает только первое значение массива, и я хочу прочитать все значения массива и сохранить результаты отдельно, а затем вычислить общее количество сгенерированных результатов, используя array_sum(), как показано ниже.

$totalseed = array($pirateseed,$openseed,$rarbgseed);
echo 'Total <font color = "green">Seeders:</font> '. array_sum($totalseed). '<br />';

Любая помощь будет оценена, спасибо

Непонятно, о чем вы спрашиваете.

Greg 21.07.2018 22:47

Я хочу, чтобы этот $tracker = array('udp://tracker.torrent.eu.org:451/announce', 'http://tracker.tfile.co:80/announce', 'http://retracker.spb.ru:80/announce', 'udp://open.demonii.si:1337/announce', 'http://peersteers.org:80/announce') автоматически получал все значения в foreach, чтобы foreach получал количество начальных значений и пиявок со всех трекеров, надеюсь, теперь все ясно.

Ken 21.07.2018 22:51

Вы спрашиваете, как сделать HTTP-запрос для каждого URL-адреса?

Greg 21.07.2018 22:54

нет @Greg, я знаю, как сделать запрос, который уже показан в моих кодах, мой вопрос в том, как автоматически сгенерировать foreach со значениями массива, чтобы он мог читать семя и пиявку со всех трекеров

Ken 21.07.2018 22:58

Все еще неясно. Честно говоря, я понятия не имею, о чем вы спрашиваете, и ваш код дает очень мало подсказок.

Andreas 21.07.2018 23:23

@Andreas Я обновил свои коды

Ken 21.07.2018 23:25

Мне нужна функция, которая будет получать значения массива один за другим автоматически и отправлять в циклы foreach, как я создал в приведенных выше кодах, надеюсь, теперь все ясно.

Ken 21.07.2018 23:30

С вашим новым обновлением я думаю, что понимаю это. Имеет ли это смысл? 3v4l.org/tSjSk Я зацикливаю массив трекера, похоже, у вас одинаковый код для всех трех значений. Очевидно, что 3v4l генерирует ошибки, так как там нет значений или функций. Считайте это дампом кода.

Andreas 21.07.2018 23:30

хорошо, спасибо @Andreas, и как получить результаты от $openseed[], я имею в виду, что хочу повторить общие результаты, сгенерированные из значений массива

Ken 21.07.2018 23:36

Я действительно не знаю, что делает ваш код, поэтому мне трудно ответить. Но вы пишете, что вам нужна сумма массива, поэтому я думаю, что echo array_sum($openseed); - это то, что вы ищете

Andreas 21.07.2018 23:38

хорошо, он показывает такие значения, как 6 8 9 вместо 23, я имею в виду, что результат будет как 6 + 8 + 9 = 23, что означает, что array_sum() не работает должным образом или мы что-то упускаем

Ken 21.07.2018 23:45

Как это может быть эхом. Вы размещаете эхо внутри foreach? Переместите его наружу и ниже. В цикле он будет печатать только по одному, а сумма 1 равна 1. Но если вы построите массив, а затем просуммируете его, вы получите одно значение .. суммы скважин.

Andreas 21.07.2018 23:55

когда я размещаю обе стороны цикла foreach, отображается только последнее значение, проверьте это 3v4l.org/HnlMr

Ken 22.07.2018 00:02

Попробуйте следующее: замените echo array_sum на var_dump($openseed);, это должно дать вам вывод о том, как выглядит массив. Скопируйте и вставьте его в свой вопрос.

Andreas 22.07.2018 00:15

хорошо, он не показывает значения, которые мы должны что-то сделать с массивом $openseed[] в цикле foreach сначала, чтобы получить точный результат, а затем echo array_sum() вне цикла.

Ken 22.07.2018 00:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
15
961
2

Ответы 2

var tracker = [1,2,3];
var tracker_counts = [];

for( let i in tracker ) {
  // scrape
  tracker_counts[i] = parseInt(Math.random() * 10); // put your $value['seeders'] here
}

console.info( "Tracker seeders individually: " + tracker_counts.join(',') );
console.info( "Seeders in total: " + tracker_counts.reduce((c,v) => c+=v ) ); // use array_sum in php

Как PHP

<?php
$tracker = [1,2,3];
$tracker_counts = [];

foreach( $tracker as $k => $v ) {
  // scrape of $v
  $tracker_counts[$k] = rand(1,9); // put your $value['seeders'] here
}

echo "Tracker seeders individually: " . implode( ', ', $tracker_counts);
echo "\n";
echo "Seeders in total: " . array_sum( $tracker_counts );

Выход

Tracker seeders individually: 7, 9, 6
Seeders in total: 22

Я понял это с помощью Андреаса и Пилана, поэтому я публикую окончательное рабочее решение на случай, если кто-то еще его ищет.

<?php
$ftracker = array('udp://tracker.torrent.eu.org:451/announce', 'http://tracker.tfile.co:80/announce', 'http://retracker.spb.ru:80/announce', 'udp://open.demonii.si:1337/announce');
$hashx = array( $hash );
$info = $scraper->scrape( $hashx, $ftracker );

$openseed = [];
foreach($ftracker as $track){
    $hashx = array( $hash );
    $info = $scraper->scrape( $hashx, $track );
    foreach ($info as $key => $value) {
        $openseed[] = $value['seeders'];
    }
}
echo 'Seed for Each Tracker Separately'.implode( ', ', $openseed);
echo 'Total Seed for All Trackers'. array_sum( $openseed );
?>

Спасибо Андреасу и Пилану

Очень хочу увидеть массив, что-то не так. Если вы взрываете массив, он возвращает строку, строка не должна приниматься в array_sum. Я считаю, что даже если код работает сейчас, он может сломаться из-за другого ввода.

Andreas 22.07.2018 09:06

Другие вопросы по теме