Страница 1 из 1

Warning: Invalid argument supplied for foreach()

Добавлено: 14 фев 2011, 23:38
marius
всем привет!помогите пожалуйста.кароче создал свой сервер бф 2 с ведением статистики игры и столкнулся с проблемами в скриптах файлов php.где было легче яи сам исправил но вот с данной ошибкой не могу разобратся что к чему.
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\bf2statistics\player.php on line 404
в этом месте должна стоять таблица с изображениями рисунков открытых либо закрытых анлоков оружия.
в програмировании я не оч мало что понимаю.как можно исправить это?

изображение 1 с ошибкой
изображение 2 как должно выглядеть


тут кусок где ошибка ,но залил и целый файл player.php:

... $award_name = $data['award'];
if( $data['type'] == '1' )
{
// badges
$award_name .= "_" . $data['level'];
$badges .= '<img height="96" width="96" src="' . $resources_dir . '/graphics/awards/badges/' . $award_name . '.png" alt="<big><big><big>' . $stats->awardsKey[$award_name]['name'] . '</big></big></big>
' . str_replace(array("\n",'"'),'',nl2br($stats->awardsKey[$award_name]['desc'])) . '"> ' . "\n\t";
} else if( $data['type'] == '2' ) {
// medals
$medals .= '<img height="96" width="96" src="' . $resources_dir . '/graphics/awards/medals/' . $award_name . '.png" alt="<big><big><big>' . $stats->awardsKey[$award_name]['name'] . ' x ' . $data['level'] . '</big></big></big>
' . str_replace(array("\n",'"'),'',nl2br($stats->awardsKey[$award_name]['desc'])) . '"> ' . "\n\t";
} else if( $data['type'] == '3' ) {
// ribbons
$ribbons .= '<img height="96" width="96" src="' . $resources_dir . '/graphics/awards/ribbons/' . $award_name . '.png" alt="<big><big><big>' . $stats->awardsKey[$award_name]['name'] . '</big></big></big>
' . str_replace(array("\n",'"'),'',nl2br($stats->awardsKey[$award_name]['desc'])) . '"> ' . "\n\t";
}
}
?>

<tr>
<td align="center"><b>Badges</b></td>
<td align="left"><?php echo $badges; ?></td>
</tr>
<tr>
<td align="center"><b>Medals</b></td>
<td align="left"><?php echo $medals; ?></td>
</tr>
<tr>
<td align="center"><b>Ribbons</b></td>
<td align="left"><?php echo $ribbons; ?></td>
</tr>
</table>

<?php } else { ?>

<table border="0" cellspacing="0" cellpadding="0" class="awards">
<tr>
<td align="center" style="background-color: #3f3f3f" colspan="2"><b>Awards</b></td>
</tr>
<tr>
<td align="center">Badges, Medals, Ribbons</td>
<td align="center">None yet. Get on that soldier!</td>
</tr>
</table>

<?php } ?>



<? include("unlocks.php"); ?>
<table border="0" cellspacing="0" cellpadding="0" class="awards">
<tr>
<td align="center" style="background-color: #3f3f3f"><b>Unlocks</b></td>
</tr>
<tr>
<td>
404 <?php foreach($weaponIsUnlocked as $number => $Unlocked){ ?>
<img src="<?php echo $resources_dir; ?>/graphics/unlocks/<? echo $number ?>_<? echo $unlocked ?>.png" alt="<? echo $weaponDesc[$number] ?>" align="left">
<? } ?>
</td>
</tr>
</table>


</div>

<?php }} else { ?>

<div align="center">
<b>Error:</b> <?php echo $stats->error; ?>


Could not load stats for PID "<?php echo $_GET['pid']; ?>"


<input type="button" value="Back" onclick="history.back();">
</div>

<hr width="600">

<?php } ?>

<?php require('footer.php'); ?>

Re: Warning: Invalid argument supplied for foreach()

Добавлено: 15 фев 2011, 10:27
Duncon
Косяк здесь include("unlocks.php"); $weaponIsUnlocked скорее всего отсутствует..

$Unlocked и $unlocked - интпретатор посчитает за разные переменные..

Re: Warning: Invalid argument supplied for foreach()

Добавлено: 18 фев 2011, 15:00
marius
Duncon писал(а):Косяк здесь include("unlocks.php"); $weaponIsUnlocked скорее всего отсутствует..

$Unlocked и $unlocked - интпретатор посчитает за разные переменные..

а почему косяк? такой файл существует и они взаимосвязанны потому как файл плайер.пхп связан с ним - оттуда берётся инфа об анлоках,тока чёта гдета криво стоит.
вот файл анлокс.пхп:

Код: Выделить всё

<?
ini_set(user_agent,"GameSpyHTTP/1.0"); 
// usefull info
// http://bf2.fun-o-matic.org/index.php/Main_Page
function toZeroOrOne($char) {
    if($char == "s") {
        return 1;
    } else {
        return 0;
    }
}

function getData($url) { // get data from a URL using either file() or CURL
    if( function_exists('file') && function_exists('fopen')) { // try file() first
        $raw = @file($url);
    }

    if( !$raw ) { // either there was no function, or it failed -- try curl
        $curl_handle = curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, $url);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 1);
        curl_setopt($curl_handle, CURLOPT_TIMEOUT, 10);
        $raw = curl_exec($curl_handle);
        $err = curl_error($curl_handle);
        if( $err != '' ) {
            return false;
        }
        $raw = explode("\n",trim($raw));
        curl_close($curl_handle);
    }

    if( !$raw ) // still nothing, forgetd a'bout it
        return false;

    // trim it up!
    @array_walk($raw, 'file_trim');

    return $raw;
}

$currentWeaponNumber = array('11','22','33','44','55','66','77' ,'88','99','111','222','333','444','555');

if(is_numeric($_GET['pid'])) {
    $url = $asp.'/getunlocksinfo.aspx?pid=' . $_GET['pid'];
} else {
    $url = $asp.'/getunlocksinfo.aspx?nick=' . $_GET['pid'];
}

// Get Unlocks info
$data = getData($url);

// Set array as empty
$weaponIsUnlocked = array();
foreach($currentWeaponNumber as $weapon) {
    $weaponIsUnlocked[$weapon] = 0;
}
//changed to go through the array instead of counting up form 1 to 14
foreach ($data as $line) {
    $values = explode("\t",$line);
    if (trim($values[0]) == 'D' && in_array(trim($values[1]), $currentWeaponNumber)) {
        $weaponIsUnlocked[trim($values[1])] = toZeroOrOne(trim($values[2]));
    }
}
// array maken met als elementen strings die een korte beschrijving van het wapen geven
$weaponDesc = array('11'=>"
        <big><big><big>DAO-12</big></big></big>
<i>
        Anti-tank</i>

        <img src=$resources_dir/graphics/unlocks/dao.png>
        ",
    '22'=>"
        <big><big><big>G3</big></big></big>
<i>
        Assault</i>

        <img src=$resources_dir/graphics/unlocks/G3A3.png>
        ",
    '33'=>"
        <big><big><big>MK3A1</big></big></big>
<i>
        Engineer</i>

        <img src=$resources_dir/graphics/unlocks/Jackh.png>
        ",
    '44'=>"
        <big><big><big>L85A1</big></big></big>
<i>
        Medic</i>

        <img src=$resources_dir/graphics/unlocks/sa80.png>
        ",
    '55'=>"
        <big><big><big>G36C</big></big></big>
<i>
        Spec-ops</i>

        <img src=$resources_dir/graphics/unlocks/g36c.png>
        ",
    '66'=>"
        <big><big><big>PKM</big></big></big>
<i>
        Support</i>

        <img src=$resources_dir/graphics/unlocks/pkm.png>
        ",
    '77'=>"
        <big><big><big>M95</big></big></big>
<i>
        Sniper</i>

        <img src=$resources_dir/graphics/unlocks/m95.png>
        ",
    '88'=>"
        <big><big><big>FN2000</big></big></big>
<i>
        Assault(SF)</i>

        <img src=$resources_dir/graphics/unlocks/fn2000.png>
        ",
    '99'=>"
        <big><big><big>MP-7</big></big></big>
<i>
        Engineer(SF)</i>

        <img src=$resources_dir/graphics/unlocks/mp7.png>
        ",
    '111'=>"
        <big><big><big>G36E</big></big></big>
<i>
        Medic(SF)</i>

        <img src=$resources_dir/graphics/unlocks/g36e.png>
        ",
    '222'=>"
        <big><big><big>FN SCAR-L</big></big></big>
<i>
        Spec-ops(SF)</i>

        <img src=$resources_dir/graphics/unlocks/fnscarl.png>
        ",
    '333'=>"
        <big><big><big>MG36</big></big></big>
<i>
        Support(SF)</i>

        <img src=$resources_dir/graphics/unlocks/mg36.png>
        ",
    '444'=>"
        <big><big><big>P90</big></big></big>
<i>
        Anti-tank(SF)</i>

        <img src=$resources_dir/graphics/unlocks/p90.png>
        ",
    '555'=>"
        <big><big><big>L96A1</big></big></big>
<i>
        Sniper(SF)</i>

        <img src=$resources_dir/graphics/unlocks/l96a1.png>
");
?>

Re: Warning: Invalid argument supplied for foreach()

Добавлено: 19 фев 2011, 02:26
Duncon
Посмотрие чем является переменная, что в ней сей час (gettype,print_r) Телепатичски сложно дебажить, я указал файл посколько в нём образуется переменная. Соответственно он тянет следующий итд..