[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объявление функции.
I159
Есть код:
echo "<br>\$count= ";
$count=array();/* Создаём массив содержащий повторения значений костей по принципу:
значение - ключ, количество повторений - значение.*/

for ($a=1; $a<=6; $a++) // Внешний цикл удерживает первое значение массива
{
for($b=1; $b<=6; $b++) /* в то время как внутренний цикл перебирает все значения
массива. Когда внутренний цикл проходит все заданные значения, внешний переходит к
значению следующему по порядку и.т.д.*/

{
if($dies[$a]==$dies[$b])/*Внешний цикл сравнивается со внутренним.
И в случае, если во внешнем цикле есть совпадения со внутренним, при условии,
что это совпадение в различных элементах массивов*/

{
$count[$a]++;/* массиву $count присваиваются значения равенств
и увеличиваются на 1*, так как нулевое значение с которого начинаются массивы
и соответственно циклы нас не интерисует.*/

}
}

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]++;//значения внешнего цикла присваиваются массиву и увеличиваются на 1.
}
}

$quantrpt[$a]/=$a; //делим каждое значение само на себя, чтобы получить boolen значение.
echo $quantrpt[$a]; // в $quantrpt помещается количество повторений, а не их значения, как в $count;
}

$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;
}
// вычисление stright.
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']);

Выводит такие ошибки:
Цитата
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

Warning: reset() [function.reset]: Passed variable is not an array or object in /home/admin/domains/bambootonnels.com.ua/public_html/test1_2.php on line 101

Warning: array_unique() [function.array-unique]: The argument should be an array in /home/admin/domains/bambootonnels.com.ua/public_html/test1_2.php on line 102

Warning: array_values() [function.array-values]: The argument should be an array in /home/admin/domains/bambootonnels.com.ua/public_html/test1_2.php on line 103
И не обрабатывает данные.



Спустя 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 не имеет значения,
{
$cash=100; // присваивается значение 100
echo "<h1>Your cash: ".$cash."\$</h1><br>"; // выводим сумму наличествующую у игрока
}

for($i=0;$i<=5;$i++)
{ if(empty($checkbox[$i])) // если флажки не проставлены
{
$dies[$i]=rand(1,6); // значения костей равны случайным числам от 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. Кол-во аргументов поистине пугает

Меня тоже... unsure.gif

Спустя 34 минуты, 26 секунд (15.08.2010 - 10:22) linker написал(а):
Массив $dies никогда и не был массивом, потому и ошибки сыпятся.

Спустя 31 минута, 11 секунд (15.08.2010 - 10:53) I159 написал(а):
linker, массив $dies я объявлял:
$dies=array();// объявлен массив со значениями костей
for($i=1; $i<=6; $i++)
{
$dies[$i]=rand(1,6);// бросили кости
echo $dies[$i]." ";
}

И без функции обрабатывается нормально. Вот без функции http://bambootonnels.com.ua/test1_3.php , а вот с функцией http://bambootonnels.com.ua/test1_2.php. За исключением объявления функции, код идентичный.

Спустя 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]++;/* массиву $count присваиваются значения равенств
и увеличиваются на 1*, так как нулевое значение с которого начинаются массивы
и соответственно циклы нас не интерисует.*/

}
}

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]++;//значения внешнего цикла присваиваются массиву и увеличиваются на 1.
}
}

$quantrpt[$a]/=$a; //делим каждое значение само на себя, чтобы получить boolen значение.
echo $quantrpt[$a]; // в $quantrpt помещается количество повторений, а не их значения, как в $count;
}

$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;
}
// вычисление stright.
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 написал(а):
Спасибо smile.gif

Спустя 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);

?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.