Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите разделить массив
 
 автор: selma   (21.02.2011 в 08:40)   письмо автору
 
 

Доброго всем дня, возникла проблемка при разделении массива поровну, а именно:

есть массив:
<?
$mass 
= array('1','2','3','4','5','6','7','8','9','10',
                
'11','12','13','14','15','16','17','18','19','20',
                
'21','22','23','24','25','26','27','28','29','30',
                
'31','32','33','34','35','36');
?>


помогите создать две сессионные переменные в которых будет по 18 элементов из массива $mass и так, чтобы элементы не повторялись (если в первой переменной есть элемент со значением 1, то во второй его уже быть не должно). Условие: массив должен делиться рэндомно

  Ответить  
 
 автор: Trianon   (21.02.2011 в 09:22)   письмо автору
 
   для: selma   (21.02.2011 в 08:40)
 

Что-то уж больно много требований сразу.
Как создавать сессионные переменные, не зная их имени - непонятно.
Последнее условие (насчет должен делиться рэндомно) с гарантией вообще невыполнимо

Взять первую половину =array_slice(массив, 0, половина_длины)
Взять вторую половину =array_slice(массив, половина_длины)
Перемешать shuffle(массив)

  Ответить  
 
 автор: selma   (21.02.2011 в 09:31)   письмо автору
 
   для: Trianon   (21.02.2011 в 09:22)
 

Делала так (для одной переменной):

<?
session_start
();

$arr=array('1','2','3','4','5','6','7','8','9','10',
           
'11','12','13','14','15','16','17','18','19','20',
           
'21','22','23','24','25','26','27','28','29','30',
           
'31','32','33','34','35','36');

if (empty(
$_SESSION['cols'])) $_SESSION['cols']=0;

while (
$_SESSION['cols']<18 && !isset($_SESSION['numb']))
{
for (
$i=0;$i<=17;$i++)
  {
  
$_SESSION['numb'] = $_SESSION['numb'].$arr[array_rand($arr)]." | ";
  ++
$_SESSION['cols'];
  }
}
?>


Но цифры повторяются:((((((( я увернна, что нужно проверять на наличие in_array(); но как????

  Ответить  
 
 автор: Trianon   (21.02.2011 в 09:41)   письмо автору
 
   для: selma   (21.02.2011 в 09:31)
 

 <?php

$arr
=array('1','2','3','4','5','6','7','8','9','10',
           
'11','12','13','14','15','16','17','18','19','20',
           
'21','22','23','24','25','26','27','28','29','30',
           
'31','32','33','34','35','36');

$arr0 $arr;
shuffle($arr0);
$arr1 array_slice($arr00count($arr)/2);
$arr2 array_slice($arr0count($arr)/2);

$_SESSION['numbers'][0] = $arr1;
$_SESSION['numbers'][1] = $arr2;


Если Вы хотите комментарии по своему коду, то сперва попробуйте получить две обычных переменных, вне связи с сессиями. Сессии у Вас затуманивают картину так, что ошибок не видно.

  Ответить  
 
 автор: selma   (21.02.2011 в 10:06)   письмо автору
 
   для: Trianon   (21.02.2011 в 09:41)
 

огромное спасибо:) мысль уловила

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования