#php #arrays
#php #массивы
Вопрос:
Моя цель — выяснить, что это за оператор и где он был в исходном $operatorArray (который содержит различные операторы, такие как » «, «-» и т.д.)
Итак, мне удалось проверить, когда $operator совпадает с другим оператором в моем существующем $operatorArray, однако мне нужно знать, где в $ operatorArray он найден.
foreach ($_SESSION['explodedQ'] as $operator){ //search through the user input for the operator.
if (in_array("$operator", $operatorArray)) { //if the operator that we found is in the array, then tell us what it is
print_r("$operator"); //prints the operator found
print_r("$positionNumber"); //prints where the operator is
} //if operator
else{
$positionNumber ; //The variable which keeps count on where the array is searching.
}
Я пробовал поиск в Google / Stack, но дело в том, что я на самом деле не знаю, что искать в Google. Я искал такие вещи, как «найти индекс из in_array» и т.д. … И я не вижу, как это сделать. Если бы вы могли предоставить мне простой способ понять, как этого добиться, я был бы признателен. Спасибо за ваше время.
Комментарии:
1. НЕ используйте переменные, как вы делаете это здесь. Удалите двойные кавычки СЕЙЧАС!
2. Хорошо, можете ли вы сказать мне, почему? (На самом деле я все еще учусь) 🙂 Это потому, что это не нужно и просто удлиняет его или техническая причина? или оба варианта?
3. всегда лучше избегать кавычек doble — даже при печати переменной. Это намного чище, быстрее (минимально, но все же) для синтаксического анализатора PHP, позволяет избежать орфографических ошибок, улучшить поддержку IDE и так далее.. Если вы продолжите использовать переменные в кавычках, вам будет сложнее сменить язык программирования и т.д…
Ответ №1:
array_search сделает то, что вы ищете
Ответ №2:
Взято прямо из руководства по PHP:
array_search()
— Выполняет поиск в массиве заданного значения и возвращает соответствующий ключ в случае успеха
Если вы ищете неассоциативный массив, он возвращает соответствующий ключ, который является индексом, который вы ищете. Для не последовательно проиндексированных массивов (т.Е. array(1 => 'Foo', 3 => 'Bar', ...)
) вы можете использовать результат array_values()
и выполнить поиск в нем.
Комментарии:
1. Я обнаружил, что это был лучший ответ. Все остальные ответы были похожими, однако этот прекрасно объясняет это. Спасибо.
Ответ №3:
Возможно, вы захотите попробовать это
foreach($_SESSION['explodedQ'] as $index => $operator) { /* your stuff */ }
Таким образом, вы сможете распечатать индекс, $index
как только ваш in_array()
попадет в нужное $operator
положение.
Ответ №4:
я думаю, вам нужен array_search()
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
Ответ №5:
Используйте:
$key = array_search($operator, $array);