помогите разобраться с массивами

Статус
В этой теме нельзя размещать новые ответы.

Acidrayne

Местный житель
Регистрация
30 Сен 2007
Сообщения
296
Реакции
20
Добрый день хочу разобраться со следующей проблемой но решения пока не нашел:

делаю запрос к базе получаю значения, циклом do while выводится 3 результата, но необходимо сделать слдеующее:

PHP:
$row=mysql_fetch_array($sql);
for($i=1;$i<15;++$i){

if($i==$row['id']){
//делаем действие

}else{

//делаем другое действие
}
}
я понимаю что это неправильно, объясните как это лучше сделать
 
не совсем ясна поставленная задача...
если обращаться к массиву данных из базы будешь как $row['id'] то достаточно только ассоциативного массива
PHP:
while($row=mysql_fetch_assoc($sql)){ 
for($i=1;$i<15;++$i){ 
if($i==$row['id']){ 
//делаем действие 
}else{ 
//делаем другое действие 
} 
} }
таким образом обработаются все данные полученные из базы...
 
Можно с одним циклом
PHP:
for($i=1; $i<$row = mysql_fetch_array($sql); $i++<14;) {
if($i==$row['id']){ 
//делаем действие 
}else{ 
//делаем другое действие 
} 
}
 
Спасибо но ваши примеры не работают :( Вот то нужно получить на выходе:

1
2
3
4 -сопало
5
6
7
8-совпало
9
10
11
12
13
14
15

а если како либо id совпадет то вывести к примеру текст
 
PHP:
while($row=mysql_fetch_assoc($sql)){
    if (1 <= $row['id'] && 15 > $row['id']) {
        echo "Yes";
    } elso {
        echo "No";
    }
}
 
Спасибо но ваши примеры не работают :(
так может в массиве который ты вытаскиваешь из базы id больше 15? или вообще id не попадает в твою выборку...
Ты бы привёл кусок кода который делает запрос к БД может там проблема.
Ну или проверь какие id приходят из базы:
PHP:
while($row=mysql_fetch_assoc($sql)){ 
echo $row['id']."<br>";
}
P.S. да только заметил... если не ошибаюсь в
PHP:
for($i=1;$i<15;++$i)
++$i должно быть наоборот $i++
PHP:
for($i=1;$i<15;$i++)
 
PHP:
while($row=mysql_fetch_assoc($sql)){
    if (1 <= $row['id'] && 15 > $row['id']) {
        echo "Yes";
    } elso {
        echo "No";
    }
}

вот мой код:
PHP:
$sql = mysql_query("SELECT * FROM `" . TABLE_PREFIX . "planet` ")
    or die (mysql_error());
	$galaxy = mysql_fetch_assoc($sql);
	$count = mysql_num_rows($sql);
	echo "запрос вернул ".$count." результата <br>";
	
	while($galaxy=mysql_fetch_assoc($sql)){
    if (1 <= $galaxy['id_p'] && 15 > $galaxy['id_p']) {
        echo "Yes";
    } else {
        echo "No";
    }
}

возращает
запрос вернул 3 результата
YesYes

++$i должно быть наоборот $i++

++$i работает быстрее чем $i++


PHP:
так может в массиве который ты вытаскиваешь из базы id больше 15? или вообще id не попадает в твою выборку... 
Ты бы привёл кусок кода который делает запрос к БД может там проблема.
Ну или проверь какие id приходят из базы:


нет это невозможно, id_p в базе 1,8,12 всего три результата, о чем гласит функция mysql_num_rows
 
++$i должно быть наоборот $i++
Откуда знаешь? Может у него в базе id=1 не существует, тогда вполне можно использовать префиксный инкремент. Хотя в таком случае можно было
PHP:
for($i=2;$i<15;$i++)
В общем, не понятно... :)
++$i работает быстрее чем $i++
Жестко - действительно на один проход меньше :yahoo:
Кстати, видишь 2 раза YES? Это ты из-за префиксного инкремента потерял первый элемент. Вот так-то...
А по теме попробуй код с явным приведением типов:
PHP:
if($i==(int)$row['id'])
 
PHP:
$arr = range(1, 14);
while($galaxy = mysql_fetch_assoc($sql))
{
   if(in_array($galaxy['id'], $arr))
   {
      echo 'Yes';
   }
   else
   {
      echo 'No';
   }
}
 
ваш код работает, но как вывести то что я писал выше:

1-совпало
2
3
4 -сопало
5
6
7
8-совпало
9
10
11
12
13
14
15
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху