Beste PHP Hulp dudes,

Ik heb een poker scriptje gemaakt , maar nu bij het testen krijg ik steeds een warning , het werkt perfect maar ik wil deze warning eruit halen.

PHP Warning: array_flip() [<a href='function.array-flip'>function.array-flip</a>]: Can only flip STRING and INTEGER values!


Het gaat om deze regel , wie o wie kan mij vertellen hoe ik het moet oplossen , of kan de oplossing geven.

<?
if ( 1 == count(array_flip($sk)) ){
?>

Gr Mike
zoals de warning al zegt. Can only flip STRING and INTEGER values!

Maak er eerst een string van met [php]implode[/php], draai hem dan om en daarna maak je er weer een array van met [php]explode[/php].
volgens mij gaat het erom dat $sk andere waardes heeft dan integer en strings.
Jacco Brandt op 25/08/2011 20:27:35

volgens mij gaat het erom dat $sk andere waardes heeft dan integer en strings.


//Sorry dat ik offtopic ga
Jij reageert toch ook altijd lekker nutteloos hé ;-) Ofwel herhaal je, ofwel wat onzin... (sorry, ik erger er me aan)
Mike, Roel geeft toch een oplossing?

Blijkbaar geef jij iets anders op dan een string of een int. Daar moet je dus iets aan doen. Als je dat niet lukt, dan zal je ons wat meer code moeten geven. Want wij weten nu helemaal niet wat $sk is.

Dat laatste is op zich ook verkeerd. In principe zou je aan de variablenaam toch al moeten weten wat het is. Bijvoorbeeld $users, merk de s op. Dan kan je er vanuit gaan dat dat een array is met gebruikersgegevens in.
Ja ik wil het eerst correct werkend hebben en daarna 1 voor 1 de vars aanpassen zodat het wat overzichterlijker is.

hieronder de codering.






<?
include $_SERVER['DOCUMENT_ROOT'].'/_config.php';
$msg = '';
$form = false;
$kaart = array();
$show_result = 0;
$msg_error = true;
if ( isset($_SESSION['poker']) )
{
if ( isset($_POST['next']) )
{
$form = true;
$show_result = 2;
for($i = 0; $i < 5; $i++)
{
$kaart[$i] = ( isset($_POST['kaart' . $i]) ) ? $_SESSION['poker']['kaart'][$i] : $_SESSION['poker']['kaart'][$i+5];
}
$sk = array();
$sw = array();
$counts = Array();
$waarde_list = array(14,2,3,4,5,6,7,8,9,10,11,12,13,14,2,3,4,5,6,7,8,9,10,11,12,13,14,2,3,4,5,6,7,8,9,10,11,12,13,14,2,3,4,5,6,7,8,9,10,11,12,13);
for($i = 0; $i < 5; $i++)
{
$sk[$i] = floor($kaart[$i]/13);
$sw[$i] = $waarde_list[$kaart[$i]];
$counts[$sw[$i]] = ( isset($counts[$sw[$i]]) ) ? $counts[$sw[$i]]+1 : 1 ;
}
sort($sw);
sort($sk);
if ( ( max($sw) == min($sw)+4 && 5 == count(array_flip($sw)) ) || ( in_array(14,$sw) && in_array(2,$sw) && in_array(3,$sw) && in_array(4,$sw) && in_array(5,$sw) ) )
{
if ( 1 == count(array_flip($sk)) )
{
if ( min($sw) == 10 )
{
$prijs = 10;
}
else
{
$prijs = 8;
}
}
else
{
$prijs = 4;
}
}
?>
Overzichtelijk programmeren is vooral voor jezelf.

Wat probeer je hier te doen? In termen van kaarten en score, niet in termen van array en integers:
count(array_flip($sk))

Reageren