Задать вопрос
tmshchk
@tmshchk
Изучаю front-end и back-end разработку

Почему in_array() не работает в цикле?

Всем привет! Есть многомерный массив, внутри которого где-то есть ключ id со значением 976654.

Как сделать поиск этого значения так, чтобы потом вписать значение ключа в другом массиве?

Самостоятельно накрутил такой велосипед:
function check() {
    $index = 1;

    while ($index < end($session)) {

      if (in_array("976654", $session["data"][$index])) {
        $result["id"] = "true";
      }

      $index = $index + 1;

    }
    return;
  }
check();


Но код упорно не хочет присваивать значение при найденном значении.

Ручным перебором определил, что:
if (in_array("976654", $session["data"][1])) {
  $result["id"] = "true";
}

Работает корректно. Но в другом случае значение 976654 может лежать в $session["data"][5] или $session["data"][24].

Как написать цикл, который бы искал это значение?
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))
$id;
$search = '976654';
foreach($session['data'] as $key => $val) {
    if (in_array($search, $val)) {
        $id = $key;
        break;
    }
}
echo $id;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
if ($key = array_search("976654", $session['data'])) {
  $result['id'] = $key;
}


Но при этом у вас $result не возвращается из функции через return $result;, и не является глобальной переменной, определённой вне функции check(). А значит вне функции check() вы его изменение и не увидите...
Ответ написан
при выходе из функции переменная $result не определена, может должно быть return $result; ?
как попадает переменная $session в функцию?
Включите в интерпретаторе вывод всех ошибок и предупреждений, что бы увидеть все это безобразие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы