Nano Hash - криптовалюты, майнинг, программирование

array_search в php не находит мою строку

Итак, я пытаюсь создать функцию, которая ищет строку во всем массиве. Но это дает мне что-нибудь... Итак, мой массив выглядит так:

    array:1 [▼
      "list" => array:2 [▼
        "pagination" => array:5 [▶]
        "entries" => array:11 [▼
          0 => array:1 [▼
            "entry" => array:8 [▼
              "firstName" => "Doctor"
              "lastName" => "Who"
              "emailNotificationsEnabled" => true
              "telephone" => "0123456789"
              "company" => []
              "id" => "DW"
              "enabled" => true
              "email" => "[email protected]"
            ]
          ]
          1 => array:1 [▶]
          2 => array:1 [▶]
          3 => array:1 [▶]
          4 => array:1 [▶]
          5 => array:1 [▶]
          6 => array:1 [▶]
          7 => array:1 [▶]
          8 => array:1 [▶]
          9 => array:1 [▶]
          10 => array:1 [▶]
        ]
      ]
    ]

Например, сначала я сделал $key = array_search("doctor", $users);, но это ничего мне не дало. Поэтому я подумал, что это потому, что у меня есть многомерный массив. Поэтому я сократил его до одного массива (и я бы искал в остальной части исходного массива с помощью цикла for), так что теперь я работаю с этим массивом, который я получил с помощью $users['list']['entries'][0]

array:1 [▼
  "entry" => array:8 [▼
    "firstName" => "Doctor"
    "lastName" => "Who"
    "emailNotificationsEnabled" => true
    "telephone" => "0123456789"
    "company" => []
    "id" => "DW"
    "enabled" => true
    "email" => "[email protected]"
  ]
]

Но $key = array_search("doctor", $users['list']['entries'][0]); мне все равно ничего не дает (кроме false).

Кто-нибудь знает, где моя ошибка? Потому что я еще не мог найти решение своей проблемы, и я довольно долго занимался этим... Я все еще новичок в php, поэтому, возможно, я пропустил что-то очевидное, и мне очень жаль, если я делал.

Заранее спасибо !


  • Во-первых, ваш массив все еще многомерный. Вам нужно $users['list']['entries'][0]['entry']. Во-вторых, array_search находит только точные совпадения с учетом регистра, и ни одно из значений в массиве не является доктором. 27.06.2017
  • @iainn О, хорошо, спасибо! Даже если вы добавите вот так false array_search("value", $array, false)? 27.06.2017
  • Ага. false — это поведение по умолчанию, поэтому вам никогда не нужно явно передавать его. Как правило, вы все равно хотите предоставить true в большинстве случаев, так как в противном случае вы получите ложные срабатывания при сравнении строк с логическим значением true. В этом случае, если вы запустите array_search("doctor", $array, false), оно будет соответствовать полю emailNotificationsEnabled. 27.06.2017
  • @iainn Хорошо, с $key = array_search("Doctor", $users['list']['entries'][0]['entry']); он работает и отображает мое первое имя, но когда я ставлю false, вы правы, он всегда дает мне emailNotificationsEnabled с любым значением, которое я использую. Итак, как я могу искать что-то в моем массиве без учета регистра? 27.06.2017
  • См. stackoverflow.com/questions/4168107/ 27.06.2017
  • @iainn большое спасибо! 27.06.2017
  • @JackA проверьте мой ответ, я обновил свой ответ, чтобы сделать ваш поиск нечувствительным 27.06.2017

Ответы:


1

вы ищете doctor, но значение, хранящееся в вашем массиве, равно Doctor. Так что либо ищите Doctor как

$key=array_search('Doctor', $users['list']['entries'][0]));

или для регистро-чувствительного поиска

$key=array_search(strtolower('Doctor'), array_map('strtolower', $users['list']['entries'][0]));

Примечание: поскольку ваш массив многомерный, используйте цикл для поиска вашего значения.

27.06.2017
  • Отключение опции strict не означает, что поиск не зависит от регистра. 27.06.2017
  • Хорошо, сначала я забыл ['entry'], чтобы сделать мой массив одномерным, поэтому теперь я использую $users['list']['entries'][0]['entry'], который работает с поиском с учетом регистра, это одна большая проблема решена, я думаю, ага. Но для поиска по регистру я всегда получаю эту ошибку Warning: strtolower() expects parameter 1 to be string, array given независимо Я делаю. Вы знаете, откуда это? 27.06.2017
  • Хорошо, я знаю, почему это дает мне эту ошибку: это из-за "company", который является массивом. Я открою другую проблему, если не смогу найти, как ее решить, так как это еще одна проблема, спасибо! 27.06.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..