Перейти к содержимому


Выбрать шаблон и создать сайт

Работа с данными вне цикла

#1 bo4kov

bo4kov
  • Пользователь
  • 26 сообщений
  • Репутация: 0
0

Отправлено 15 Май 2015 - 15:18

Здравствуйте, возникла одна проблема с работой многомерного массива и циклом.

 

В общем есть многомерный ассоциативный массив ($arr):

$arr = Array (
    [0] => Array
        (
            [id] => 12
            [title] => Видео
        )

    [1] => Array
        (
            [id] => 3
            [title] => Книги
        )
) 

И мне нужно достать id и записать их в строку такого вида - 12,3.

 

В общем я перебираю массив с помощью цикла foreach:

$cat = '';
foreach($arr as $item){
    $cat = $item['id'];
    echo $cat; 
}

В данном случае все работает.

Но мне нужно $cat передать в функцию:

category($cat);

Но в функцию передается только значение первого элемента массива (12).

Так как сделать, чтобы в функцию передавались все значения (12,3)?

Я думаю не правильно будет помещать вызов функции во внутрь цикла? 


 

 

  • 0

#2 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 15 Май 2015 - 16:11

$cat = array();

foreach($arr as $item){
    $cat[] = $item['id'];
}

$cat = implode(',', $cat);

category($cat);

Вот.


Сообщение отредактировал kamchatniyoleg: 15 Май 2015 - 16:11

  • 1
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#3 ShowPrint

ShowPrint
  • Пользователь PRO
  • 1 701 сообщений
  • Репутация: 405

Отправлено 15 Май 2015 - 16:11

Или я что-то не понимаю, или Вы в $cat не формируете строку для передачи в функцию...  :blink:

То, что я вижу в коде - это последовательное присвоение значения и его вывод, для записи в строку в таком виде как Вам нужно, наверное надо делать как-то так:

$cat .= $item['id'];

или сразу с разделителями:$cat .= ($item['id'].",");Но в этом случае в конце строки будет тоже стоять запятая... Которую потом можно будет "обрезать"... Или проверять достижение конца цикла...

Надо понимать возможные вариации id - если это просто числа, то я бы наверное в качестве разделителя взял пробел и по окончанию цикла "оттримил" бы её... Если надо - потом можно заменить пробелы на запятые  ;)


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#4 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 15 Май 2015 - 16:19

@ShowPrint, что бы не повторялась запятая - изучите мой комент!


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#5 ShowPrint

ShowPrint
  • Пользователь PRO
  • 1 701 сообщений
  • Репутация: 405

Отправлено 15 Май 2015 - 16:19

@kamchatniyoleg, предложил более изящный вариант...

 

Уже...  :D Мы с Вами одновременно пишем в тему...  B)


Сообщение отредактировал ShowPrint: 15 Май 2015 - 16:21

  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#6 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 15 Май 2015 - 16:32

Спасибо всем, сделал как сказал kamchatniyoleg, все работает.


  • 0


Оформление форума – IPBSkins.ru