За последние 24 часа нас посетили 52367 программистов и 1796 роботов. Сейчас ищут 779 программистов ...

Работа с массивом

Тема в разделе "PHP для новичков", создана пользователем user999, 18 апр 2007.

  1. user999

    user999 Активный пользователь

    С нами с:
    17 ноя 2006
    Сообщения:
    57
    Симпатии:
    0
    Необходимо найти в массиве 1 все элементы которые соответствуют элементам массива 2 и удалить их.
    Написал код:
    PHP:
    1.  
    2. <?
    3. $result = mysql_query("SELECT массив1 FROM table WHERE 'Условие 1'");
    4.     while ($row = mysql_fetch_array($result)) {
    5.     $a=$row['массив1'];
    6.     $a=str_replace (',', ' ', $a);
    7.     $a=explode (" ", $a);
    8.  
    9.     $result2 = mysql_query("SELECT массив2 FROM table WHERE 'Условие 2'");
    10.     while ($row = mysql_fetch_array($result2)) {
    11.     $b=$row['массив2'];
    12.     $b=str_replace (',', ' ', $b);
    13.     $b=explode (" ", $b);
    14.         foreach ($a as $a){
    15.         if ($a==$b) $a="";
    16.         }
    17.         $k=implode (", " , array($d));
    18.     }
    19.  
    20. ?>
    21.  
    Выдает последние элементы массива 1, а не все "очищенные" элементы массива 1.
    Что нужно поправить?
     
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
  3. user999

    user999 Активный пользователь

    С нами с:
    17 ноя 2006
    Сообщения:
    57
    Симпатии:
    0
    Да, правда, именно эти функции мне нужны. Видно я не тот мануал читал. В том, что я читал были только сортировка массивов. Psih, спасибо.
     
  4. Demon

    Demon Активный пользователь

    С нами с:
    20 апр 2006
    Сообщения:
    239
    Симпатии:
    0
    Подскажите пожалуйста, как узнать позицию строкового ключа относительно начала, в ассоциативном массиве?
     
  5. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Demon
    array_keys + array_search :)
     
  6. Demon

    Demon Активный пользователь

    С нами с:
    20 апр 2006
    Сообщения:
    239
    Симпатии:
    0
    Пасибо.;)
     
  7. iva_nov

    iva_nov Активный пользователь

    С нами с:
    21 апр 2007
    Сообщения:
    16
    Симпатии:
    0
    Пожалуйста оцените надежность кода:

    В массиве $HTTP_POST_VARS находится что-то вроде:
    Операция=1&Операция=2&Операция=& Операция=4&
    Объект=&Объект=2&Объект=&3Объект=&
    Submit=Send

    Я пытаюсь построить структуру для sql запроса:

    Код (Text):
    1. $sql="WHERE ";
    2. foreach($HTTP_POST_VARS as $name=>$value)
    3. {
    4. if($name=="submit")break;
    5. foreach($value as $val)
    6. {
    7. $sql=$sql."id".$name."='".$val."' AND ";
    8. }
    9. }
    10. print $sql=substr($sql,0,strlen($sql)-5);
    Итог:
    Код (Text):
    1. WHERE Операция=1 AND Операция=2 AND Операция=4 AND Объект=2 AND Объект=3
    Дело в том, что через POST я отправляю значения checkbox’ов:

    Код (Text):
    1. <form name= action=/sql.php method=post>
    2. <input type=checkbox name= Операция[0] value=4>значение из БД[0]<br>
    3. <input type=checkbox name= Операция[1] value=2>значение из БД[1]<br>
    4. <input type=checkbox name= Операция[2] value=3>значение из БД[2]<br>
    5. <input type=checkbox name= Операция[3] value=1>значение из БД[3]<br>
    6. <input type=checkbox name=Объект[0] value=1>значение из БД[1]<br>
    7. <input type=checkbox name=Объект[1] value=3>значение из БД[3]<br>
    8. <input type=checkbox name=Объект[2] value=4>значение из БД[4]<br>
    9. <input type=checkbox name=Объект[3] value=2>значение из БД[2]<br>
    10. <input type=submit name=submit value=Send></form>


    Не могу понять: это устойчиво или надо по-другому
     
  8. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    iva_nov
    <input type=checkbox name= Операция [0] value=4>
    У меня серьезные подозрения, что параметр name здесь примет значение "Операция", а не "Операция [0]". Вообще все параметры нужно брать в кавычки, кроме того, русских букв в названиях параметров быть не должно (значение - пожалуйста). И самое главное: код крайне уязвим, т.к. ты все полученные данные пихаешь в запрос, не проверяя. Скрипт - находка для хакера Васи ;)
     
  9. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    iva_nov
    аватарку смените. разрешены только личные фото.
     
  10. iva_nov

    iva_nov Активный пользователь

    С нами с:
    21 апр 2007
    Сообщения:
    16
    Симпатии:
    0
    слова по-русски, это чтоб по-понятнее, а массив действительно несколько странноватым получается, но все выходит и имена меняю
     
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    iva_nov
    http://phpfaq.ru/slashes читать как минимум со слов
     
  12. iva_nov

    iva_nov Активный пользователь

    С нами с:
    21 апр 2007
    Сообщения:
    16
    Симпатии:
    0
    я, вообще-то, спрашивал про механизм! правильно ли я написал?
    а вот про
    , то у меня происходит так:

    WHERE aOper=1 AND aOper=2 AND aOper=4 AND aObj=2 AND aObj=3, т.е. я не только имзменяю переменные, но и прибавляю к ним символ слева!
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    HTTP_*_VARS лучше поменять на POST
    а на тему механизма Вам никто не скажет, Вы, как сами выразились, упростили «чтоб по-понятнее» что даже если это
    PHP:
    1. <? $sql=$sql."id".$name."='".$val."' AND "; ?>
    значения в кавычки заключает, то тут
    этого нет :)
    получается, что приходится рассуждать о том, чего, в принципе, не видел...
    а на то, что бы не пришла в этих переменных какая-нибудь гадость проверять уже не надо?
    учитывая
    PHP:
    1. <? if($name=="submit")break; ?>
    до submit можно передать ещё пару-тройка значений ;)
     
  14. iva_nov

    iva_nov Активный пользователь

    С нами с:
    21 апр 2007
    Сообщения:
    16
    Симпатии:
    0
    сэнкъю вэри мач, наконец-то понятно! круто! гы-гы-гы! я вкурил! вауч!