Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Случайная выборка из двумерного массива, "вешает" Apache
Форумы портала PHP.SU » » Если скрипт не работает » Случайная выборка из двумерного массива, "вешает" Apache

Страниц (1): [1]
 

1. Valmond - 17 Февраля, 2012 - 14:48:15 - перейти к сообщению
Доброго времени суток! Помогите разобраться. Мне необходимо выбрать из двумерного массива, 16 не повторяющихся значений. Скрипт я написал, но происходит что-то странное, при выполнении Апач просто "прекращает работу", причём несколько раз. Иногда поле этого показывает результат, а иногда работает нормально.

В чём же может быть причина?

Вот собственно код :

class Number
{
public $id; //Текущая используемая ячейка
public $sosedi; // Массив с правилами для ячеек-соседей
public $arr = array(); //Массив со случайными ячейками(результат)

public function sosed_rules()
{
$this->sosedi[0] = array(1,4,5);
$this->sosedi[1] = array(2,5,6,4);
$this->sosedi[2] = array(3,6,7,5);
$this->sosedi[3] = array(2,7,6);
$this->sosedi[4] = array(0,1,5,8,9);
$this->sosedi[5] = array(0,1,2,6,10,8,4);
$this->sosedi[6] = array(1,2,3,11,7,10,9,5);
$this->sosedi[7] = array(3,2,6,10,11);
$this->sosedi[8] = array(5,4,9,12,13);
$this->sosedi[9] = array(5,4,8,14,12,13,10,6);
$this->sosedi[10] = array(5,9,13,14,15,11,7,6);
$this->sosedi[11] = array(6,7,10,15,14);
$this->sosedi[12] = array(9,8,13);
$this->sosedi[13] = array(12,9,8,10,14);
$this->sosedi[14] = array(13,10,9,11,15);
$this->sosedi[15] = array(14,11,10);
}


//Random выбор ячейки
public function first_id()
{
$rand = array_rand($this->sosedi,1);
$this->id = $rand;
$this->arr[0] = $rand;
}

public function random_sosedi($id)
{

$rand_sosed = array_rand($this->sosedi[$id],1);
$value = $this->sosedi[$id][$rand_sosed];

$search = in_array($value,$this->arr);
if ($search !== true)
{
$this->arr[] = $value;
$this->id = $value;
if(!isset($this->arr[15]))
{
$this->random_sosedi($this->id);
}
}
if ($search == true)
{
$this->random_sosedi($this->id);
}
}
2. Panoptik - 17 Февраля, 2012 - 14:52:50 - перейти к сообщению
вам нужно выбрать уникальными именно значения или ключи?
3. Valmond - 17 Февраля, 2012 - 15:00:07 - перейти к сообщению
Именно значения

 

Powered by ExBB FM 1.0 RC1