Hoi allemaal,

Ik had hier dus een php-scriptje, maar het schijnt dat IF hier verkeerd werkt
hier is het scriptje:

<?php

$x = $_POST['x'];
$y = $_POST['y'];

$map = json_decode(file_get_contents('./mijnjson.txt'));
//Ik probeer het zelf te controleren
echo 'Je hebt: '.$map[$y][$x]; //Dit geeft wel 0
if ( $map[$y][$x] == "B" )
{
	echo '<br />fout'; //Maar toch zegt hij ook fout
}
else
{
	echo '<br />goed';
}

?>


en hier is mijnjson.txt

[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,"B","B","B","B","B","B",0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,"B","B","B","B","B","B",0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,"B","B","B","B","B","B",0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]


En dus bij coordinaten (11,16), zou het 0 moeten zijn (geeft hij ook wel bij mijn controle), maar toch geeft hij een bericht: fout

Wat doe ik hier fout?
Dat is geen json... Dit geeft 'Invalid JSON: TypeError:Statement on line 21: Cannot convert undefined or null to Object' (javascript).
Kopiƫer/plak foutje, nu verbeterd
Zoals je op php.net kunt lezen geeft [php]json_decode[/php] een object terug (want dat is json ook in principe).
Als je daar een array van wilt hebben, moet je de tweede parameter op true zetten (json_decode($string,1);).
Zie dus ook php.net / [php]json_decode[/php].
Ik heb een json.php gedownload (http://mike.teczno.com/JSON/JSON.phps) waarin ik onderin de functie json_decode declareer.

(Bij mijn webhosting service is PHP nog geen 5.3.*)


<?php

// ... eigenlijke json.php

If ( !function_exists('json_encode') )
{
   function json_encode($value)
   {
        $json = new Services_JSON();
        $output = $json->encode($value);
        return $output;
   }
   function json_decode($value)
   {
        $json = new Services_JSON();
        $json->Services_JSON(SERVICES_JSON_LOOSE_TYPE);
        $output = $json->decode($value);
        return $output;
   }
}
 
?>


Door $json->Services_JSON(SERVICES_JSON_LOOSE_TYPE); hoef ik dat al niet meer te doen. Het probleem is alleen, bij de eerste regel geeft hij wel een 0, maar toch geeft de 2e echo het bericht: fout.

[[Edit]]
Ok, ik heb het gevonden, maar ik weet niet waarom hij het niet deed.

<?php

// ... Begin
$map = json_decode(file_get_contents('./mijnjson.txt'));
//Split
$thisattr = explode(':', $map[$y][$x]);
$thisattr = $thisattr[0];
if ( $thisattr == "B" )
// ... Eind

?>


Eigenlijk zal ik : nooit gebruiken in mijn string, maarja, op deze manier werkt het. (Na 6 uur proberen :P)

Reageren