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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Массив и проверка на вывод

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
pantela
Отправлено: 20 Августа, 2014 - 18:40:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Имеется массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [id] => 10861
  4.     [manufacturer] => MERCEDES-BENZ
  5.     [model] => ML 350
  6.     [year] => 2003
  7.     [vin] => 595034
  8.     [action] => Array
  9.         (
  10.             [0] => Array
  11.                 (
  12.                     [rid] => 8
  13.                     [base_id] => 10861
  14.                     [actsc] => Hilight
  15.                 )
  16.  
  17.             [1] => Array
  18.                 (
  19.                     [rid] => 10
  20.                     [base_id] => 10861
  21.                     [actsc] => Title
  22.                 )
  23.  
  24.             [2] => Array
  25.                 (
  26.                     [rid] => 12
  27.                     [base_id] => 10861
  28.                     [actsc] => Bumper 2
  29.                 )
  30.  
  31.             [3] => Array
  32.                 (
  33.                     [rid] => 13
  34.                     [base_id] => 10861
  35.                     [actsc] => $$$
  36.                 )
  37.  
  38.             [4] => Array
  39.                 (
  40.                     [rid] => 14
  41.                     [base_id] => 10861
  42.                     [actsc] => $$$
  43.                 )
  44.         )
  45. )
  46.  


т.е. Имеется авто, у авто имеются акции, исходя из акции надо выводить текст, т.е. if (actsc == '$$$') { echo "Money" } else { echo "Parts" }

Делаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP foreach ($vehiclevin['action'] as $action):?>
  3.         <?PHP if ($action['actsc'] == '$$$') { ?>
  4.                 Money
  5.         <?PHP } else { ?>
  6.                 Parts
  7.         <?PHP } ?>
  8. <?PHP endforeach ?>
  9.  


Но у меня выводиться столько раз текст сколько раз == условию, понимаю это т.к. в foreach я делаю условие, но как сделать что бы только 1 раз выводилось бы не исходя из того сколько там записей... через do while может как-то... Растерялся

спс.Ув.

(Отредактировано автором: 20 Августа, 2014 - 18:41:03)

 
 Top
teddy
Отправлено: 20 Августа, 2014 - 19:08:09
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Прервать выполнение цикла можно при помощи break.

Но не нужно так делать, не нужно выбирать то, что не используется. Делайте выборку только тех данных, которые будут реально использоваться. Тогда не придется придумывать костыли как избавиться от неиспользуемых записей.
 
 Top
pantela
Отправлено: 20 Августа, 2014 - 19:21:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Ту момент что на страницу через массив надо в одном месте выносить всё данные, и исходя из него надо в одном месте выводить один или другой текст.
break - хмм, как? и какие есть ещё варианты?
Может через do while и когда $i = 1, тогда прерывать цикл... только как... Растерялся
 
 Top
teddy
Отправлено: 20 Августа, 2014 - 19:37:49
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Странно, что Вы не умеете использовать break Улыбка Вот тут есть описание и примеры
http://php.net/manual/ru/control...ctures.break.php

Для начала нужно определить, по какому именно значению Вы собираетесь выводить нужную фразу. Если это например значение из ключа который равен 0, тогда проверяйте значение $arr['action'][0]['actsc'] и в зависимости от его содержимого выводите нужную фразу.
 
 Top
pantela
Отправлено: 20 Августа, 2014 - 19:47:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




ок, но ключь может быть 0, а может быть 5, я же не знаю у какой записи будет это значение которое должно быть равна условию...
 
 Top
teddy
Отправлено: 20 Августа, 2014 - 19:56:39
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Получить ключ по конкретному значению можно при помощи функции array_search
Проверить наличие значения в массиве можно при помощи функции in_array()

Дальше сами ;) ушел

(Отредактировано автором: 20 Августа, 2014 - 19:57:47)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB