Нахождение индекса при поиске из массива с использованием in_array в PHP

#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);