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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как можно вывести элементы массива вне цикла, если каждый элемент истино условию?

Сообщения:  [1-10]   [11-14] 

 
 автор: Wita1y   (18.09.2006 в 17:06)   письмо автору
 
   для: kasmanaft   (18.09.2006 в 16:02)
 

Вместо условия стоит @ перед каждой переменной, чтоб не выдавал ошибку.
Я её поставил потому что все остальное работает. :-)))

   
 
 автор: kasmanaft   (18.09.2006 в 16:02)   письмо автору
 
   для: Wita1y   (18.09.2006 в 15:40)
 

Нет, можно проверить сначала, пустой массив или нет .. несколько строк ничего не испортит ... да и в любом случае, всё лучше проверять ...

if (count($result[0]) > 0)
    $first = implode ('<br>', $result[0]);
else $first = 'таких нет';

ну и
if (count($b) > 0)
    for($a = 0; $a < count($b); $a++)

   
 
 автор: Wita1y   (18.09.2006 в 15:40)   письмо автору
 
   для: kasmanaft   (18.09.2006 в 15:38)
 

Это понятно что будет известен.
А если страница только загрузилась, что тогда, во все ячейки заполнять ошибки!? :-)))

   
 
 автор: kasmanaft   (18.09.2006 в 15:38)   письмо автору
 
   для: Wita1y   (18.09.2006 в 15:14)
 

Ну нужно заполнить массив и он тоже будет известен :)

   
 
 автор: Wita1y   (18.09.2006 в 15:14)   письмо автору
 
   для: kasmanaft   (18.09.2006 в 14:59)
 

И этот вариант тоже хорош, но только если массив нам известен. :-)

Прошу прощения.
Мне надо было заранее сказать что массив будет заполняться методом $_POST или $_GET.
А то уже замучал тут некоторых. :-/

   
 
 автор: kasmanaft   (18.09.2006 в 14:59)   письмо автору
 
   для: Wita1y   (18.09.2006 в 10:19)
 

Можно так сделать:

<?php
$b 
= array(2941531333424471758536);
for(
$a 0$a count($b); $a++)
{
   if(
$b[$a]>&& $b[$a]<20)
   {
      
$result[0][]=$b[$a];
   }
   elseif(
$b[$a]>20 && $b[$a]<40)
   {
      
$result[1][]=$b[$a];
   }
   elseif(
$b[$a]>40 && $b[$a]<60)
   {
      
$result[2][]=$b[$a];
   }
}
$first implode ('<br>'$result[0]);
$second implode ('<br>'$result[1]);
$third implode ('<br>'$result[2]);
echo 
"<table border=1>
      <tr><td>0-20</td><td>20-40</td><td>40-60</td></tr>
      <tr><td>
$first</td><td>$second</td><td>$third</td></tr>
      </table>"
;
?>

Если надо, подправить условия еще, как говорил EXP

   
 
 автор: Wita1y   (18.09.2006 в 14:58)   письмо автору
 
   для: EXP   (18.09.2006 в 13:17)
 

>Помоему условие надо сделать elseif($b[$a]>=20 && $b[$a]<40) { $result[1]= $a[$b]; }
>чтобы не пропускать круглые числа.
Это ни к чему. :-)

>И можно перед таблицей сделать $r1[]=$result[0]; $r2[]=$result[1]; $r3[]=$result[2]; ... И в таблице echo implode(" ", $r1); ... echo implode(" ", $r2); .....

Сделал и работает, но при этом нужно будет каждый раз писать функцию implode(). Что мне конечно хотелось бы ограничиться echo $...;

Функция implode() работает на прямую с данными. Если нет данных то выдает ошибку.
Warning: implode() [function.implode]: Bad arguments. in ...\test.php on line 93

Допустим что я хочу только еще вести в форму значение и передать методом $_POST или $_GET но еще не ввел, а implode() уже выдает ошибку. Вот из-за этого я не хотел использовать implode(). В принципе можно условие поставить, но это еще чуть лишнего кода, когда и без того хватает.

У кого еще кaкие предложения?

   
 
 автор: EXP   (18.09.2006 в 13:17)   письмо автору
 
   для: Wita1y   (18.09.2006 в 10:19)
 

Помоему условие надо сделать elseif($b[$a]>=20 && $b[$a]<40) { $result[1]= $a[$b]; } чтобы не пропускать круглые числа. И можно перед таблицей сделать $r1[]=$result[0]; $r2[]=$result[1]; $r3[]=$result[2]; ... И в таблице echo implode(" ", $r1); ... echo implode(" ", $r2); .....

   
 
 автор: Wita1y   (18.09.2006 в 10:19)   письмо автору
 
   для: kasmanaft   (18.09.2006 в 09:28)
 

>мне казалось, что вы хотите в разные строки таблицы результат записывать, тогда бы нужен был цикл ...

Мне как раз таки нужно в разные строки! Точнее в ячейки таблицы. :)

Есть таблица. В каждую ячейку я буду вставлять значение которое истинно условию.
Я там только одно условие показал, а будет несколько. Вот.

К примеру:

<?php
$b 
= array(2941531333424471758536); 
for(
$a 0$a count($b); $a++)
{
   if(
$b[$a]>&& $b[$a]<20)
   {
      
$result[0]=$a[$b]; // result[0]=мне только поставить на соответствующие ячейки
   
}
   elseif(
$b[$a]>20 && $b[$a]<40)
   {
      
$result[1]=$a[$b];
   }
   elseif(
$b[$a]>40 && $b[$a]<60)
   {
      
$result[2]=$a[$b];
   }
}
?>

В таблице должно отобразиться так:

------------------------
| 0-20 | 20-40 | 40-60 |
|------+-------+-------|
|  13  |   29  |   41  |
|   4  |   33  |   53  |
|  17  |   24  |   47  |
|   5  |   36  |   58  |
------------------------

   
 
 автор: kasmanaft   (18.09.2006 в 09:28)   письмо автору
 
   для: Wita1y   (18.09.2006 в 08:07)
 

мне казалось, что вы хотите в разные строки таблицы результат записывать, тогда бы нужен был цикл ...
а если в одну строчку, то можно сделать так:

<?
$b 
= array(33343536);
for(
$a 0$a count($b); $a++)
{
   if(
$b[$a]>30 && $b[$a]<40)
      
$result[] = $b[$a];
}
$result implode (' '$result);
echo 
"<table><tr><td>$result</td></tr></table>";
?>

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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