Есть array $test, в нем допустим 10 разных значений, мне надо проверить переменную $post, чтобы она соответствовала хотя бы одному значению. Подскажите как это правильно и быстро сделать (быстро в плане не так накладно, чтобы было для системы). P.S. Значений может быть и 100, и это текст до 20 символов.
PHP: <?php $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); ?>
Попробую еще раз: Вот небольшой пример я получаю переменную PHP: $_POST["table_name"]; // мне ее надо проверить на совпадение mysql_connect("localhost", "root", ""); $result = @mysql_list_tables("admin"); $num_rows =@mysql_num_rows($result); for ($i = 0; $i < $num_rows; $i++) { $table_name_bd[$i] = @mysql_tablename($result, $i); // вот этого хотя бы одно совпадение } mysql_free_result($result); // я так понимаю что вот этот вариант правильный foreach ($table_name_db as $val) { if ($val == $_POST["table_name"]) echo "Все ок"; }else{ echo "eroor!!"; } Но будет ли оно правильно работать (быстро), сами понимаете таблиц может быть и сотня и две.
Меняешь строчку Код (Text): $table_name_bd[$i] = @mysql_tablename($result, $i); // вот этого хотя бы одно совпадение на Код (Text): $table_name_bd[ @mysql_tablename($result, $i)] = 1; // вот этого хотя бы одно совпадение а затем проверяешь Код (Text): if (isset($table_name[$_POST['table_name']]) ... Это как второй вариант к пример... замеряешь время первым, вторым, ..., сотым способом и сравниваешь какой быстрее
На счет цикла не беспокойся, он быстро пройдет и сотню и две. Хотя весь цикл можно заменить одним условием. PHP: <? if (in_array($_POST['table_name'], $table_name_db )){ // ok } ?> Только это будет чуть медленее, чем вариант topas А вообще, есть в MySQL такой запрос Код (Text): SHOW TABLES LIKE 'шаблон'