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

Тема в разделе "PHP", создана пользователем Acidrayne, 9 апр 2011.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Acidrayne

    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{

    //делаем другое действие
    }
    }
    я понимаю что это неправильнообъясните как это лучше сделать




     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    не совсем ясна поставленная задача...
    если обращаться к массиву данных из базы будешь как $row['id'] то достаточно только ассоциативного массива
    PHP:
    while($row=mysql_fetch_assoc($sql)){ 
    for(
    $i=1;$i<15;++$i){ 
    if(
    $i==$row['id']){ 
    //делаем действие 
    }else{ 
    //делаем другое действие 

    } }
    таким образом обработаются все данные полученные из базы...
     
  3. rex1963

    rex1963

    Регистр.:
    19 фев 2007
    Сообщения:
    228
    Симпатии:
    47
    Можно с одним циклом
    PHP:
    for($i=1$i<$row mysql_fetch_array($sql); $i++<14;) {
    if(
    $i==$row['id']){ 
    //делаем действие 
    }else{ 
    //делаем другое действие 

    }
     
  4. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Спасибо но ваши примеры не работают :( Вот то нужно получить на выходе:

    а если како либо id совпадет то вывести к примеру текст
     
  5. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    PHP:
    while($row=mysql_fetch_assoc($sql)){
        if (
    <= $row['id'] && 15 $row['id']) {
            echo 
    "Yes";
        } 
    elso {
            echo 
    "No";
        }
    }
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    так может в массиве который ты вытаскиваешь из базы 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++) 
     
  7. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    вот мой код:
    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 (
    <= $galaxy['id_p'] && 15 $galaxy['id_p']) {
            echo 
    "Yes";
        } else {
            echo 
    "No";
        }
    возращает
    ++$i работает быстрее чем $i++


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

    нет это невозможно, id_p в базе 1,8,12 всего три результата, о чем гласит функция mysql_num_rows
     
  8. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Откуда знаешь? Может у него в базе id=1 не существует, тогда вполне можно использовать префиксный инкремент. Хотя в таком случае можно было
    PHP:
    for($i=2;$i<15;$i++)
    В общем, не понятно... :)
    Жестко - действительно на один проход меньше :yahoo:
    Кстати, видишь 2 раза YES? Это ты из-за префиксного инкремента потерял первый элемент. Вот так-то...
    А по теме попробуй код с явным приведением типов:
    PHP:
    if($i==(int)$row['id'])
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
    $arr range(114);
    while(
    $galaxy mysql_fetch_assoc($sql))
    {
       if(
    in_array($galaxy['id'], $arr))
       {
          echo 
    'Yes';
       }
       else
       {
          echo 
    'No';
       }
    }
     
  10. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    ваш код работает, но как вывести то что я писал выше:

     
Статус темы:
Закрыта.