Необходимо найти в массиве 1 все элементы которые соответствуют элементам массива 2 и удалить их. Написал код: PHP: <? $result = mysql_query("SELECT массив1 FROM table WHERE 'Условие 1'"); while ($row = mysql_fetch_array($result)) { $a=$row['массив1']; $a=str_replace (',', ' ', $a); $a=explode (" ", $a); $result2 = mysql_query("SELECT массив2 FROM table WHERE 'Условие 2'"); while ($row = mysql_fetch_array($result2)) { $b=$row['массив2']; $b=str_replace (',', ' ', $b); $b=explode (" ", $b); foreach ($a as $a){ if ($a==$b) $a=""; } $k=implode (", " , array($d)); } ?> Выдает последние элементы массива 1, а не все "очищенные" элементы массива 1. Что нужно поправить?
array_intersect() array_diff_assoc() array_diff() array_intersect_assoc() В мануал занглянуть слабо, да?
Да, правда, именно эти функции мне нужны. Видно я не тот мануал читал. В том, что я читал были только сортировка массивов. Psih, спасибо.
Подскажите пожалуйста, как узнать позицию строкового ключа относительно начала, в ассоциативном массиве?
Пожалуйста оцените надежность кода: В массиве $HTTP_POST_VARS находится что-то вроде: Операция=1&Операция=2&Операция=& Операция=4& Объект=&Объект=2&Объект=&3Объект=& Submit=Send Я пытаюсь построить структуру для sql запроса: Код (Text): $sql="WHERE "; foreach($HTTP_POST_VARS as $name=>$value) { if($name=="submit")break; foreach($value as $val) { $sql=$sql."id".$name."='".$val."' AND "; } } print $sql=substr($sql,0,strlen($sql)-5); Итог: Код (Text): WHERE Операция=1 AND Операция=2 AND Операция=4 AND Объект=2 AND Объект=3 Дело в том, что через POST я отправляю значения checkbox’ов: Код (Text): <form name= action=/sql.php method=post> <input type=checkbox name= Операция[0] value=4>значение из БД[0]<br> <input type=checkbox name= Операция[1] value=2>значение из БД[1]<br> <input type=checkbox name= Операция[2] value=3>значение из БД[2]<br> <input type=checkbox name= Операция[3] value=1>значение из БД[3]<br> <input type=checkbox name=Объект[0] value=1>значение из БД[1]<br> <input type=checkbox name=Объект[1] value=3>значение из БД[3]<br> <input type=checkbox name=Объект[2] value=4>значение из БД[4]<br> <input type=checkbox name=Объект[3] value=2>значение из БД[2]<br> <input type=submit name=submit value=Send></form> Не могу понять: это устойчиво или надо по-другому
iva_nov <input type=checkbox name= Операция [0] value=4> У меня серьезные подозрения, что параметр name здесь примет значение "Операция", а не "Операция [0]". Вообще все параметры нужно брать в кавычки, кроме того, русских букв в названиях параметров быть не должно (значение - пожалуйста). И самое главное: код крайне уязвим, т.к. ты все полученные данные пихаешь в запрос, не проверяя. Скрипт - находка для хакера Васи
слова по-русски, это чтоб по-понятнее, а массив действительно несколько странноватым получается, но все выходит и имена меняю
я, вообще-то, спрашивал про механизм! правильно ли я написал? а вот про , то у меня происходит так: WHERE aOper=1 AND aOper=2 AND aOper=4 AND aObj=2 AND aObj=3, т.е. я не только имзменяю переменные, но и прибавляю к ним символ слева!
HTTP_*_VARS лучше поменять на POST а на тему механизма Вам никто не скажет, Вы, как сами выразились, упростили «чтоб по-понятнее» что даже если это PHP: <? $sql=$sql."id".$name."='".$val."' AND "; ?> значения в кавычки заключает, то тут этого нет получается, что приходится рассуждать о том, чего, в принципе, не видел... а на то, что бы не пришла в этих переменных какая-нибудь гадость проверять уже не надо? учитывая PHP: <? if($name=="submit")break; ?> до submit можно передать ещё пару-тройка значений