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

Форум PHP

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

 

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

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

тема: Вывод 2 раза подряд записи из сессии
 
 автор: OLi   (24.03.2013 в 15:55)   письмо автору
 
 

Здравствуйте!
Пытаюсь организовать вывод из сессии. В сессию $_SESSION['BANNERS'] ложится массив такого вида:

array(3) {
  [3]=>
  array(4) {
    ["id"]=>
    array(2) {
      [0]=>
      string(1) "5"
      [1]=>
      string(1) "6"
    }
    ["image"]=>
    array(2) {
      [0]=>
      string(6) "ho.jpg"
      [1]=>
      string(6) "vo.jpg"
    }
    ["code"]=>
    array(2) {
      [0]=>
      string(0) ""
      [1]=>
      string(0) ""
    }
    ["link"]=>
    array(2) {
      [0]=>
      string(14) "http://alex.ru"
      [1]=>
      string(12) "http://vo.ru"
    }
  }
  [2]=>
  array(4) {
    ["id"]=>
    array(2) {
      [0]=>
      string(1) "3"
      [1]=>
      string(1) "4"
    }
    ["image"]=>
    array(2) {
      [0]=>
      string(6) "go.jpg"
      [1]=>
      string(6) "do.jpg"
    }
    ["code"]=>
    array(2) {
      [0]=>
      string(0) ""
      [1]=>
      string(0) ""
    }
    ["link"]=>
    array(2) {
      [0]=>
      string(16) "http://google.ru"
      [1]=>
      string(16) "http://man.ru"
    }
  }
  [1]=>
  array(4) {
    ["id"]=>
    array(2) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
    }
    ["image"]=>
    array(2) {
      [0]=>
      string(6) "ol.jpg"
      [1]=>
      string(6) "ob.jpg"
    }
    ["code"]=>
    array(2) {
      [0]=>
      string(0) ""
      [1]=>
      string(0) ""
    }
    ["link"]=>
    array(2) {
      [0]=>
      string(15) "http://yahoo.vo"
      [1]=>
      string(17) "http://man.ru"
    }
  }
}


Необходимо выбрать по ключам 1,2,3 первое значение id[0] и занести в отдельный массив.
При втором запуске скрипта сделать также. На третий запуск выбрать id[1] по той же схеме.
И так продолжать с интервалом в 2 до количества элементов id в массиве.

Вот что попытался сделать:

$_SESSION['SHOWS_ALL'] = $this->shows;
            $_SESSION['NEXT']=0;



<?
function ShowBanners()
      {  
              
$next $_SESSION['NEXT'];

              if(
$_SESSION['SHOWS_ALL']>0){

                   foreach(
$_SESSION['BANNERS'] as $key => $value)
                    {

                      if(isset(
$value['id'][$next])) { 

                          
$this->new_array[$key] = $value['id'][$next];
                      } 

                    } 

                    
$_SESSION['SHOWS_ALL'] = $_SESSION['SHOWS_ALL']-1;
              } else {


                
$_SESSION['SHOWS_ALL'] = $this->shows;
                if (
$_SESSION['NEXT'] > 2) {$_SESSION['NEXT']=0;} else {$_SESSION['NEXT']++;}
                
                
$this->ShowBanners();

              }
          

      }    
?>

  Ответить  
 
 автор: confirm   (24.03.2013 в 16:53)   письмо автору
 
   для: OLi   (24.03.2013 в 15:55)
 

Первые значения, это будут array_map('current'? $array)

  Ответить  
 
 автор: OLi   (24.03.2013 в 17:04)   письмо автору
 
   для: confirm   (24.03.2013 в 16:53)
 

Переделал немного проще и понятнее:

<?
function __construct()
      {

        
$this->core $CI = & get_instance();
        
$this->Check();

        if (
$_SESSION['SHOWS_ALL'] <= 0) {

          
$_SESSION['NEXT'] = $_SESSION['NEXT']+1;
          
$_SESSION['SHOWS_ALL'] = 2;
          
$this->ShowBanners();
        
        } else {

        
          
$_SESSION['SHOWS_ALL']= $_SESSION['SHOWS_ALL']-1;
          
$this->ShowBanners();
        }
       
      }


function 
ShowBanners()
      {   

         
               
                   foreach(
$_SESSION['BANNERS'] as $key => $value)
                    {

                      if (isset(
$value['id'][$_SESSION['NEXT']])) {
                          
$this->new_array[$key] = $value['id'][$_SESSION['NEXT']];
                      } else {

                        
$_SESSION['NEXT']=0;
                      }

                    }
      }    

?>



Проблема в том, что второй id[1] показываются один раз

  Ответить  
 
 автор: confirm   (24.03.2013 в 17:21)   письмо автору
 
   для: OLi   (24.03.2013 в 17:04)
 

Кошмар. Вам что нужно? Первое значение массива, это всегда current, и получить их сразу все можно. Следующим шагом таким же образом можно получить все первые значения уже этого массива, опять таки current. А уж два раза, три раза или более, так это сколько раз запросите, столько раз и получите.

  Ответить  
 
 автор: OLi   (24.03.2013 в 18:13)   письмо автору
 
   для: confirm   (24.03.2013 в 17:21)
 

Нужно получить не просто первый элемент в массиве, а первые элементы массива в массиве

Т-е значения id = 5,3,1
И после второго обновления страницы со скриптом получить следующие id

  Ответить  
 
 автор: confirm   (24.03.2013 в 18:38)   письмо автору
 
   для: OLi   (24.03.2013 в 18:13)
 

Вы вывалили массив в виде дампа, что уже не удобно. Ну в общем все что вас интересует описать можно было и проще:
<?
$a 
= array(
  
3=>array('id'=>array('a','b'),
           
'im'=>'c'),
  
2=>array('id'=>array('a','b'),
           
'im'=>'c'),
  
1=>array('id'=>array('a','b'),
           
'im'=>'c')
);
"

Это ведь ваш массив, и вас интересуют судя по вашему описанию значения "а", так? Ну и в чем проблема:
<?
echo '<pre>';
print_r(array_map('current'array_map('current'$a)));
/*результат
Array
(
    [3] => a
    [2] => a
    [1] => a
)

Если вам не нужны ключи в результате, значит заключите этот запрос в функцию array_values().

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

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