У меня есть многомерный массив списка игроков для Call of Duty 4. Когда я пытаюсь повторить массив, он возвращается с Array
30 раз, потому что на сервере 30 игроков.
Var_Dump of $ promodplist (Список игроков)
array(27) { [0]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "26" ["nick"]=> string(10) "DIVINEBRAH" ["gq_name"]=> string(10) "DIVINEBRAH" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "26" } [1]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "35" ["nick"]=> string(7) "><> <><" ["gq_name"]=> string(7) "><> <><" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "35" } [2]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "42" ["nick"]=> string(10) "xXthe0neXx" ["gq_name"]=> string(10) "xXthe0neXx" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "42" }
$servers['promod'] = array('cod4', '67.202.102.224'); $servers['promod2'] = array('cod4', '67.202.102.224'); $gq = new GameQ(); $gq->addServers($servers); $results = $gq->requestData(); function print_results($results) { foreach ($results as $id => $data)
И это то, что я пытаюсь использовать для перечисления текущих игроков.
$promodplist = $data['promod']['players']; foreach($promodplist as $k => $v)
Я просто хочу отозвать nick
(ник) в каждом массиве.
$promodplist = $data['promod']['players']; foreach($promodplist as $k => $v) print($v['nick']);
Должен делать то, что вы хотите. foreach
выполняет итерацию через пары ключ / значение в массиве, где $k
– это ключ элемента (в вашем случае индекс 0), а $v
– это значение (массив данных игрока для вас). Вы можете получить доступ к остальной информации, используя ее имя в качестве ключа в аксессуре массива .
Как насчет такой функции
function print_results($results) { foreach ($results as $id){ echo ": Player Info :<br />"; foreach($id as $key => $val){ // add this line to only print out the "nick" field if ($key == "nick") echo "Field: " . $key . " - Value: " . $val . "<br />"; } } }
Кроме того, форматирование массива помогает нам понять, с чем вы работаете; одна длинная строка гораздо сложнее расшифровать, чем:
array(27) { [0]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "26" ["nick"]=> string(10) "DIVINEBRAH" ["gq_name"]=> string(10) "DIVINEBRAH" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "26" } [1]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "35" ["nick"]=> string(7) "><> <><" ["gq_name"]=> string(7) "><> <><" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "35" } [2]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "42" ["nick"]=> string(10) "xXthe0neXx" ["gq_name"]=> string(10) "xXthe0neXx" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "42" } [3]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "50" ["nick"]=> string(5) "GenKY" ["gq_name"]=> string(5) "GenKY" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "50" } [4]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "63" ["nick"]=> string(4) "dupe" ["gq_name"]=> string(4) "dupe" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "63" } [5]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "72" ["nick"]=> string(7) "B2B vcc" ["gq_name"]=> string(7) "B2B vcc" ["gq_score"]=> string(1) "0" ["gq_ping"]=> string(2) "72" } [6]=> array(6) { ["frags"]=> string(1) "0" ["ping"]=> string(2) "82" ["nick"]=> string(10) "[dB]tumble" ["gq_name"]=> string(10) "[dB]tumble" ["gq_score"]=> string(1) "0" } }
Вот базовая функция, которую я использую для создания массивов из многомерных массивов.
function db_result_array($result, $key_column = null) { for ($array = array(); $row = mysql_fetch_assoc($result); isset($row[$key_column]) ? $array[$row[$key_column]] = $row : $array[] = $row); return $array; }
Вы делаете:
$promodplist = $data['promod']['players']; foreach($promodplist as $k => $v) var_dump($promodplist);
это означает, что вы выполняете тот же файл var_dump () 30 раз. Вам не нужен foreach () в вашем коде, это будет делать:
$promodplist = $data['promod']['players']; var_dump($promodplist);
В качестве отдельной заметки вы можете сделать следующее:
$promodplist = $data['promod']['players']; echo "<pre>"; print_r($promodplist); echo "</pre>";