Я хочу получать значения массива одно за другим и динамически добавлять в 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 />';
Любая помощь будет оценена, спасибо
Я хочу, чтобы этот $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 получал количество начальных значений и пиявок со всех трекеров, надеюсь, теперь все ясно.
Вы спрашиваете, как сделать HTTP-запрос для каждого URL-адреса?
нет @Greg, я знаю, как сделать запрос, который уже показан в моих кодах, мой вопрос в том, как автоматически сгенерировать foreach со значениями массива, чтобы он мог читать семя и пиявку со всех трекеров
Все еще неясно. Честно говоря, я понятия не имею, о чем вы спрашиваете, и ваш код дает очень мало подсказок.
@Andreas Я обновил свои коды
Мне нужна функция, которая будет получать значения массива один за другим автоматически и отправлять в циклы foreach, как я создал в приведенных выше кодах, надеюсь, теперь все ясно.
С вашим новым обновлением я думаю, что понимаю это. Имеет ли это смысл? 3v4l.org/tSjSk Я зацикливаю массив трекера, похоже, у вас одинаковый код для всех трех значений. Очевидно, что 3v4l генерирует ошибки, так как там нет значений или функций. Считайте это дампом кода.
хорошо, спасибо @Andreas, и как получить результаты от $openseed[], я имею в виду, что хочу повторить общие результаты, сгенерированные из значений массива
Я действительно не знаю, что делает ваш код, поэтому мне трудно ответить. Но вы пишете, что вам нужна сумма массива, поэтому я думаю, что echo array_sum($openseed); - это то, что вы ищете
хорошо, он показывает такие значения, как 6 8 9 вместо 23, я имею в виду, что результат будет как 6 + 8 + 9 = 23, что означает, что array_sum() не работает должным образом или мы что-то упускаем
Как это может быть эхом. Вы размещаете эхо внутри foreach? Переместите его наружу и ниже. В цикле он будет печатать только по одному, а сумма 1 равна 1. Но если вы построите массив, а затем просуммируете его, вы получите одно значение .. суммы скважин.
когда я размещаю обе стороны цикла foreach, отображается только последнее значение, проверьте это 3v4l.org/HnlMr
Попробуйте следующее: замените echo array_sum на var_dump($openseed);, это должно дать вам вывод о том, как выглядит массив. Скопируйте и вставьте его в свой вопрос.
хорошо, он не показывает значения, которые мы должны что-то сделать с массивом $openseed[] в цикле foreach сначала, чтобы получить точный результат, а затем echo array_sum() вне цикла.






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. Я считаю, что даже если код работает сейчас, он может сломаться из-за другого ввода.
Непонятно, о чем вы спрашиваете.