|
|
|
| Здравствуйте!
Пытаюсь организовать вывод из сессии. В сессию $_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();
}
}
?>
|
| |
|
|
|
|
|
|
|
для: OLi
(24.03.2013 в 15:55)
| | Первые значения, это будут array_map('current'? $array) | |
|
|
|
|
|
|
|
для: 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] показываются один раз | |
|
|
|
|
|
|
|
для: OLi
(24.03.2013 в 17:04)
| | Кошмар. Вам что нужно? Первое значение массива, это всегда current, и получить их сразу все можно. Следующим шагом таким же образом можно получить все первые значения уже этого массива, опять таки current. А уж два раза, три раза или более, так это сколько раз запросите, столько раз и получите. | |
|
|
|
|
|
|
|
для: confirm
(24.03.2013 в 17:21)
| | Нужно получить не просто первый элемент в массиве, а первые элементы массива в массиве
Т-е значения id = 5,3,1
И после второго обновления страницы со скриптом получить следующие id | |
|
|
|
|
|
|
|
для: 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(). | |
|
|
|