Есть код:
echo "<br>\$count= ";
$count=array();
for ($a=1; $a<=6; $a++)
{
for($b=1; $b<=6; $b++)
{
if($dies[$a]==$dies[$b])
{
$count[$a]++;
}
}
echo $count[$a];
}
$quantrpt=array();
echo "<br> \$quantrpt ";
for ($a=1; $a<=6; $a++)
{
for($b=1; $b<=6; $b++)
{
if ($count[$b]==$a)
{
$quantrpt[$a]++;
}
}
$quantrpt[$a]/=$a;
echo $quantrpt[$a];
}
$notneed=$quantrpt[1];
$pairs=$quantrpt[2];
$threes=$quantrpt[3];
$fours=$quantrpt[4];
$fives=$quantrpt[5];
$notneedto=$quantrpt[6];
if ($pairs==2 or $pairs > 2)
{
echo "<br><h3>You have two pairs.</h3>";
$prizecash=10;
}
if ($threes==1)
{
if ($pairs==1)
{
echo "<br><h3>You have full huse.</h3>";
$prizecash=50;
}
else
{
echo "<br><h3>You have tree of a kind.</h3>";
$prizecash=30;
}
}
if ($fours==1)
{
echo "<br><h3>You have four of a kind.</h3>";
$prizecash=40;
}
if ($fives==1)
{
echo "<br><h3>You have five of a kind.</h3>";
$prizecash=50;
}
sort($dies);
reset($dies);
$dies=array_unique($dies);
$dies=array_values($dies);
if($dies == range(1,5) or $dies == range(2,6) or $dies == range(1,6))
{
echo "<br><h3>You got stright.</h3>";
}
echo "<br><h3>Prizecash: ".$prizecash."</h3>";
echo "<br>Не повторяющихся значений: ".$notneed."<br>пар: ".$pairs."<br>тороек: ".$threes."<br>четверок: ".$fours."<br>пятерок: ".$fives;
Это часть программы, поэтому я хочу заключить этот код в функцию. Вне функции все работает, а в функции нет и выводит ряд ошибок. Функцию объявляю так:
function prize
(
$count,
$dies,
$quantrpt,
$notneed,
$pairs,
$threes,
$fours,
$fives,
$notneedto,
$prizecash
)
{ ...code...}
prize($_POST['count'],
$_POST['dies'],
$_POST['quantrpt'],
$_POST['notneed'],
$_POST['pairs'],
$_POST['threes'],
$_POST['fours'],
$_POST['fives'],
$_POST['notneedto'],
$_POST['prizecash']);
Выводит такие ошибки:
И не обрабатывает данные.
Спустя 15 минут (14.08.2010 - 09:28) Basili4 написал(а):
I159
Мне мнится что все вои велосипеды можно сделать стнадартными функциями пхп
рскажи что тебе требуется сделать с массивами
Спустя 48 минут, 45 секунд (14.08.2010 - 10:17) I159 написал(а):
Это игра "покер в кости". Первая часть бросает кости - создаёт массив из 6 случайных чисел, в два хода.
function rolldice($checkbox,$dies,$cash,$secondroll)
{
if (empty($cash))
{
$cash=100;
echo "<h1>Your cash: ".$cash."\$</h1><br>";
}
for($i=0;$i<=5;$i++)
{ if(empty($checkbox[$i]))
{
$dies[$i]=rand(1,6);
}
else
{
$dies[$i]=$checkbox[$i];
}
$display="\"k".$dies[$i].".gif\"";
echo "<img src=".$display.">";
if (empty($secondroll))
{
echo "<input type=\"checkbox\" name=\"checkbox[$i]\" value=\"$dies[$i]\">";
}
}
echo "<br><input type=\"submit\" value=\"Let's fucking ROCK\"><br>";
echo"I keep: ";
for($i=0;$i<=5;$i++)
{
echo $checkbox[$i];
}
}
rolldice($_POST['checkbox'],$_POST['dies'],$_POST['cash'],$_POST['secondroll']);
Вторая
функция должна высчитать выигрышные комбинации: 2 пары, три одинаковых значения, три + два, четыре, пять и пять значений по порядку - stright.
Спустя 1 час, 10 минут, 6 секунд (14.08.2010 - 11:27) I159 написал(а):
Цитата (Basili4 @ 14.08.2010 - 06:28) |
I159 Мне мнится что все вои велосипеды можно сделать стнадартными функциями пхп
рскажи что тебе требуется сделать с массивами |
Действия с какими именно массивами тебя интересуют?
Спустя 1 час, 29 минут, 7 секунд (14.08.2010 - 12:56) I159 написал(а):
В массиве $dies надо найти повторения и посчитать их количество.
Спустя 1 час, 43 минуты, 13 секунд (14.08.2010 - 14:40) I159 написал(а):
Я так понимаю, что я напутал тут, поэтому повторю основной вопрос. Почему не работает объявленная мною функция? Код в первом посте.
Basili4, какие функции ты рекомендуешь?
Спустя 3 часа, 30 минут, 41 секунда (14.08.2010 - 18:10) Nord написал(а):
Цитата |
Warning: sort() expects parameter 1 to be array, null given in /home/admin/domains/bambootonnels.com.ua/public_html/test1_2.php on line 100 |
Цитата |
Предупреждаю: функция sort() надеется получить первым параметром массив, а не ваш чертов null. Да кому он сдался в строке 100 файла /home/admin/domains/bambootonnels.com.ua/public_html/test1_2.php? |
Видимо на момент вызова ф-ции sort() ваш массив $dies уже перестает быть таковым. Проверьте, правильные ли аргументы передаются в вашу функцию и не изменяет ли она их
P.S. Кол-во аргументов поистине пугает
Спустя 15 часов, 37 минут, 7 секунд (15.08.2010 - 09:47) I159 написал(а):
Цитата |
Видимо на момент вызова ф-ции sort() ваш массив $dies уже перестает быть таковым. Проверьте, правильные ли аргументы передаются в вашу функцию и не изменяет ли она их |
Вот собственно в этом и проблема, аргументы не передаются в функцию или передаются не правильно. Что сделано не правильно? Как нужно?
Цитата |
P.S. Кол-во аргументов поистине пугает |
Меня тоже...
Спустя 34 минуты, 26 секунд (15.08.2010 - 10:22) linker написал(а):
Массив $dies никогда и не был массивом, потому и ошибки сыпятся.
Спустя 5 часов, 1 минута (15.08.2010 - 15:54) linker написал(а):
Я не знаю, где вы его объявляете, но я вижу вот этот код
prize($_POST['count'],
$_POST['dies'],
$_POST['quantrpt'],
$_POST['notneed'],
$_POST['pairs'],
$_POST['threes'],
$_POST['fours'],
$_POST['fives'],
$_POST['notneedto'],
$_POST['prizecash']);
и понимаю, что $_POST['dies'] не является массивом.
Спустя 4 часа, 24 минуты, 24 секунды (15.08.2010 - 20:18) I159 написал(а):
Вот полный код этого участка:
<html>
<head>
</head>
<body>
<?php
echo "\$dies: ";
$dies=array();
for($i=1; $i<=6; $i++)
{
$dies[$i]=rand(1,6);
echo $dies[$i]." ";
}
function prize
(
$count,
$dies,
$quantrpt,
$notneed,
$pairs,
$threes,
$fours,
$fives,
$notneedto,
$prizecash
)
{
echo "<br>\$count= ";
$count=array();
for ($a=1; $a<=6; $a++)
{
for($b=1; $b<=6; $b++)
{
if($dies[$a]==$dies[$b])
{
$count[$a]++;
}
}
echo $count[$a];
}
$quantrpt=array();
echo "<br> \$quantrpt ";
for ($a=1; $a<=6; $a++)
{
for($b=1; $b<=6; $b++)
{
if ($count[$b]==$a)
{
$quantrpt[$a]++;
}
}
$quantrpt[$a]/=$a;
echo $quantrpt[$a];
}
$notneed=$quantrpt[1];
$pairs=$quantrpt[2];
$threes=$quantrpt[3];
$fours=$quantrpt[4];
$fives=$quantrpt[5];
$notneedto=$quantrpt[6];
if ($pairs==2 or $pairs > 2)
{
echo "<br><h3>You have two pairs.</h3>";
$prizecash=10;
}
if ($threes==1)
{
if ($pairs==1)
{
echo "<br><h3>You have full huse.</h3>";
$prizecash=50;
}
else
{
echo "<br><h3>You have tree of a kind.</h3>";
$prizecash=30;
}
}
if ($fours==1)
{
echo "<br><h3>You have four of a kind.</h3>";
$prizecash=40;
}
if ($fives==1)
{
echo "<br><h3>You have five of a kind.</h3>";
$prizecash=50;
}
sort($dies);
reset($dies);
$dies=array_unique($dies);
$dies=array_values($dies);
if($dies == range(1,5) or $dies == range(2,6) or $dies == range(1,6))
{
echo "<br><h3>You got stright.</h3>";
}
echo "<br><h3>Prizecash: ".$prizecash."</h3>";
echo "<br>Не повторяющихся значений: ".$notneed."<br>пар: ".$pairs."<br>тороек: ".$threes."<br>четверок: ".$fours."<br>пятерок: ".$fives;
}
prize($_POST['count'],
$_POST['dies'],
$_POST['quantrpt'],
$_POST['notneed'],
$_POST['pairs'],
$_POST['threes'],
$_POST['fours'],
$_POST['fives'],
$_POST['notneedto'],
$_POST['prizecash']);
?>
</body>
</html>
Спустя 2 часа, 12 минут, 49 секунд (15.08.2010 - 22:31) Nord написал(а):
А почему в функцию передается $_POST['dies'], а не $dies?
Спустя 20 часов, 47 минут, 10 секунд (16.08.2010 - 19:18) I159 написал(а):
Nord, так мне показали когда-то и работало в другой функции.
Спустя 5 минут, 16 секунд (16.08.2010 - 19:24) linker написал(а):
I159
Мало ли что показали, может тебе покажут cmd format.com c:, свою голову надо иметь же на плечах. Сам подумай, создаешь массив $dies, а в функцию prize() передаешь $_POST['dies'], где логика?
Спустя 13 минут, 4 секунды (16.08.2010 - 19:37) I159 написал(а):
Спасибо
Спустя 2 минуты, 46 секунд (16.08.2010 - 19:40) ZSH написал(а):
<?php
$x=1;
echo "До функции \$x= ".$x."<br>";
function xy($x)
{
$y=$x+1;
echo "В функции \$y= ".$y."<br>";
echo "В функции \$x= ".$x."<br>";
return $y;
}
echo "После функции \$y= ".xy($x);
?>