#php #wordpress #for-loop #strpos
#php #wordpress #for-цикл #strpos
Вопрос:
У меня проблемы, потому что я не могу понять, как найти свой ответ. Я создаю веб-сайт WordPress, и у меня есть поисковая система
Я создал опцию в своей панели администратора и написал код для записи в моей таблице параметров, но теперь моя проблема
сначала я беру свои параметры из своей базы данных с
$mysynonymvalue = get_option( 'synonym-custom' );
Я уточняю, что он возвращает мне что-то вроде этого (манго, яблоко, банан) (это, конечно, пример)
Мой URL-адрес выглядит примерно так :
http://supserwebsite/wordpress/?sfid=2675amp;_sf_s=toto
Или это
http://superwebsite/wordpress/?sfid=2675amp;_sf_s=virtualisation облачные разработки
итак, я создал переменную для обработки запросов
$motsclefs3= $_GET['_sf_s'];
Теперь я хочу сравнить строку $ mysynonymvalueconvert с $ motsclefs3, чтобы определить, совпадает ли она, поэтому я пишу
if (strpos ($mysynonymvalue, $motsclefs3) ){
echo '<script >
$(document).ready(function(){
$(".vc-tabs-li:nth-child(2)").get(0).click();
});
</script>';
}
else{
echo '
<script >
$(document).ready(function(){
$(".vc-tabs-li").get(0).click();
});
</script>';
};
};
Решение, похоже, работает правильно, но я не могу получить первый результат, оно действительно совпадает со всеми результатами, но не с моим первым.
И это работает не так хорошо, потому что только с одной буквой это возвращает совпадение (например, ‘a’)
Есть решение? Спасибо
Комментарии:
1. Почему вы используете
strpos
в качестве проверки равенства?===
чище и быстрее. Кроме того, ваши операторы echo закомментированы, но, похоже, они занимают две строки, что означает, что ваш фрагмент PHP недействителен.2. Я удалил foreach, который на самом деле был бесполезен, но я использую strpos для сравнения строковых элементов, потому что в $ mysynonymvalue может быть несколько данных, а не только один, я также переработал свое echo, но все равно не то, что я ожидал ^^ ‘
3. Итак, у вас есть
mango, apple, banana
строковое значение, и теперь вы пытаетесь проверить, содержит ли оно f.e.apple
? Ну тогдаexplode
первое значение, чтобы вы получили правильный массив с отдельными словами, а затем использовалиin_array
для проверки.4. На самом деле я попробовал что-то вроде $myvariable = explode(‘ ‘, $ motsclefs3); и переработать мое «if», чтобы оно выглядело примерно как » if (in_array($myvariable, $ mysynonymvalue)) «, но результат тот же
Ответ №1:
* предоставленные URL-адреса недоступны.
Решение: Создайте словарь опций из базы данных, а затем выполните поиск по элементу, который вы ищете.
Комментарии:
1. Это пример URL, я не могу предоставить вам доступ к ^^’ извините
2. я не могу просто сравнить эти два элемента, не создавая этого? Я также пытался что-то создать для массивов моих результатов из $ mysynonymvalue, но сравнение 2 массивов, похоже, не работает из-за данных, которые не имеют одинакового номера в каждом результатах
3. Прямое сравнение массива не сработает. если у вас есть array_1 и array_2, тогда начните повторять array_2 и проверяйте во время итерации, существует ли элемент или соответствует в array_1, если существует, тогда разорвите цикл. Я думаю, вам нужно поэлементное сравнение. (поправьте меня, если я ошибаюсь).
Ответ №2:
Пока что я немного продвинулся!Итак, я пришел с этим
У меня все еще есть
$mysynonymvalue = get_option( 'synonym-custom' );
$mysynonymvalueconvert = preg_split('/[,] /',$mysynonymvalue);
Чтобы извлечь мои слова из моей базы данных и преобразовать их в массив.
(смысл этого в том, чтобы получить элементы, которые были написаны пользователем в другом месте на панели администратора WordPress)
У меня также все еще есть
$motsclefs3= $_GET['_sf_s'];
Чтобы получить мои фактические запросы (которые помогут мне сравнить). Я уточняю, что он возвращает мне строку. Чтобы быть более конкретным, URL, подобный этому (http://mywebsite/wordpress/?sfid=2675amp;_sf_s=examen ) верните мне (в строке) «examen».
Теперь моя точка зрения по-прежнему заключается в сравнении, если
$motsclefs3;
находится внутри
$mysynonymvalueconvert
Итак, я создал цикл «for», подобный этому
for ($i = 0; $i <= count($mysynonymvalueconvert); $i ){
if(in_array($motsclefs3, $mysynonymvalueconvert)){
echo'yes';
break;
}
else{
echo 'no';
break;
};
};
Но я все еще заблокирован, это возвращает «да», только если оно совпадает с первым элементом из
$mysynonymvalueconvert
Итак, есть идеи, которые могут мне помочь?
Спасибо!
Комментарии:
1. Неважно, ребята! Моя проблема была в моей базе данных ^^’. На самом деле приведенный выше код верен, но в моей базе данных не были зарегистрированы правильные данные. Итак, я просто меняю свою базу данных, чтобы она работала должным образом, и она работает хорошо, извините за беспокойство и спасибо за ваши ответы!