Foreach

pelMen

Новичок
Доброго времени суток, при написание сайта возникла проблема с array, если быть точнее с функцией foreach.
Есть array который возвращает строку:
Array ( [Type] => D [Num Players] => 1 [Index] => Array ( [1] => 0 ) [Player Name] => Array ( [1] => PelMEN ) [Kills] => Array ( [1] => 0 ) [Time connected] => Array ( [1] => 14.195922851562 ) )
Нужно получить значение: Player Name и Kills. Немного поэкспериментировав получился вот такой код:
PHP:
$players_info = A2S_PLAYER($server,$port,A2S_SERVERQUERY_GETCHALLENGE($server,$port));
$index = 0;
foreach ($players_info as $key => $value) {
if ($key == 'Player Name'){
foreach ($value as $key) {
$player = $key;
$index = $index +1; 
foreach ($players_info as $key => $value) {
if ($key == 'Kills'){
foreach ($value as $key) {
$kills = $key;
}
}
}
if ($index > 0) {
if ($player == 'PelMEN') {
echo '<li><p id="number">'.$index.'</p>'.'<p id="admin_name">'.$player.'</p>'.'<p id="kills">'.$kills.'</p></li>';     
}else {
echo '<li><p id="number">'.$index.'</p>'.'<p id="name">'.$player.'</p>'.'<p id="kills">'.$kills.'</p></li>'; 
}
} 
}
}
}
Так как функция foreach для получения строки kills закрывается до вывода данных, отображается результат для всех строк последнего значения.

Вопрос: Как правильно вывести данные kills ?
 

Univers

Новичок
Исходя из того - что вижу:
PHP:
$players_info = A2S_PLAYER($server,$port,A2S_SERVERQUERY_GETCHALLENGE($server,$port));

  if($players_info['Player Name']=='PelMEN'){
       echo '<li><p id="number">1</p>'.'<p id="admin_name">'.$players_info['Player Name'].'</p>'.'<p id="kills">'.$players_info['Kills'].'</p></li>';}
   else{
        echo '<li><p id="number">0</p>'.'<p id="name">'.$players_info['Player Name'].'</p>'.'<p id="kills">'.$players_info['Kills'].'</p></li>';}
 

Breeze

goshogun
Команда форума
Партнер клуба
pelMen

для вложенных foreach делай разные имена для твоих $key => $value
у тебя поздние перекрывают ранних
 

pelMen

Новичок
Спасибо большое за ответы, разобрался. Теперь код выглядит так:
PHP:
$players_info = A2S_PLAYER($server,$port,A2S_SERVERQUERY_GETCHALLENGE($server,$port));
$num_player = $players_info['Num Players']; 
$name = $players_info['Player Name'];
$kills = $players_info['Kills'];
for ($i = 1; $i <= $num_player; $i++) {
     if($i > 0) {
          if ($name[$i] == 'PelMEN') {
               echo '<li><p id="number">'.$i.'</p>'.'<p id="admin_name">'.$name[$i].'</p>'.'<p id="kills">'.$kills[$i].'</p></li>';
          }else {
               echo '<li><p id="number">'.$i.'</p>'.'<p id="name">'.$name[$i].'</p>'.'<p id="kills">'.$kills[$i].'</p></li>';
          }
     }
}
 
Сверху