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
Форумы портала PHP.SU :: Версия для печати :: Массив и проверка на вывод
Форумы портала PHP.SU » » Вопросы новичков » Массив и проверка на вывод

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

1. pantela - 20 Августа, 2014 - 18:40:26 - перейти к сообщению
Имеется массив:
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 может как-то... Растерялся

спс.Ув.
2. teddy - 20 Августа, 2014 - 19:08:09 - перейти к сообщению
Прервать выполнение цикла можно при помощи break.

Но не нужно так делать, не нужно выбирать то, что не используется. Делайте выборку только тех данных, которые будут реально использоваться. Тогда не придется придумывать костыли как избавиться от неиспользуемых записей.
3. pantela - 20 Августа, 2014 - 19:21:24 - перейти к сообщению
Ту момент что на страницу через массив надо в одном месте выносить всё данные, и исходя из него надо в одном месте выводить один или другой текст.
break - хмм, как? и какие есть ещё варианты?
Может через do while и когда $i = 1, тогда прерывать цикл... только как... Растерялся
4. teddy - 20 Августа, 2014 - 19:37:49 - перейти к сообщению
Странно, что Вы не умеете использовать break Улыбка Вот тут есть описание и примеры
http://php.net/manual/ru/control...ctures.break.php

Для начала нужно определить, по какому именно значению Вы собираетесь выводить нужную фразу. Если это например значение из ключа который равен 0, тогда проверяйте значение $arr['action'][0]['actsc'] и в зависимости от его содержимого выводите нужную фразу.
5. pantela - 20 Августа, 2014 - 19:47:21 - перейти к сообщению
ок, но ключь может быть 0, а может быть 5, я же не знаю у какой записи будет это значение которое должно быть равна условию...
6. teddy - 20 Августа, 2014 - 19:56:39 - перейти к сообщению
Получить ключ по конкретному значению можно при помощи функции array_search
Проверить наличие значения в массиве можно при помощи функции in_array()

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

 

Powered by ExBB FM 1.0 RC1