За последние 24 часа нас посетили 22938 программистов и 1230 роботов. Сейчас ищут 759 программистов ...

Поиск внутри массива

Тема в разделе "PHP для новичков", создана пользователем Doc, 11 июл 2020.

  1. Doc

    Doc Активный пользователь

    С нами с:
    15 дек 2011
    Сообщения:
    15
    Симпатии:
    0
    Привет , есть массив $loc такого вида :
    Код (Text):
    1. Array ( [0] => stdClass Object ( [location] => /books/Книги/Арменский Е.В.Электрические микромашины.1975.djvu ) [1] => stdClass Object ( [location] => /books/Книги/Арутюнов П.А. Теория и применение алгоритмических измерений.1990.djvu ) [2] => stdClass Object ( [location] => /books/Книги/Афанасьев В.В. Трансформаторы тока.1989.djvu ) [3] => stdClass Object ( [location] => /books/Книги/Ацюковский В.А. Ёмкостные дифференциальные датчики перемещения.1960.djvu ) [4] => stdClass Object ( [location] => /books/Книги/Байерс Т.20 конструкций с солнечными элементами.1988.djvu ) [5] => stdClass Object ( [location] => /books/Книги/Баканов М.В. Информационные микромашины следящих счётно-решающих систем (вращающиеся трансформаторы,сельсины).1977.djvu ) [6] => stdClass Object ( [location] => /books/Книги/Андреев В.С.Теория нелинейных электрических цепей.1982.djvu ) [7] => stdClass Object ( [location] => /books/Книги/Андреев Ю.Н. Управление конечномерными линейными объектами.djvu ) [8] => stdClass Object ( [location] => /books/Книги/Басовский В.Ф. Устройства электропитания электронной аппаратуры.djvu ) [9] => stdClass Object ( [location] => /books/Книги/Бастанов В.Г. 300 практических советов.djvu ) [10] => stdClass Object ( [location] => /books/Книги/Батареи аккумуляторные свинцовые стартерные ёмкостью свыше 30АЧ.Инструкция по эксплуатации.djvu ) [11] => stdClass Object ( [location] => /books/Книги/ms6105 instr.djvu ) [12] => stdClass Object ( [location] => /books/Книги/Автомобильные датчики.Пер с англ. Ю.Н.Савченко.1982.djvu ) [13] => stdClass Object ( [location] => /books/Книги/Айзенберг Т.Б.Руководство к решению задач по теоретической механике.1968.djvu ) [14] => stdClass Object ( [location] => /books/Книги/Алексеенко А.Г. Применение прецизионных аналоговых ИС.djvu ) [15] => stdClass Object ( [location] => /books/Книги/Анго А.Математика для электро- и радиоинженеров.1964.djvu ) [16] => stdClass Object ( [location] => /books/Книги/Sprv-MCS.djv ) [17] => stdClass Object ( [location] => /books/Книги/pcbfab.rar ) [18] => stdClass Object ( [location] => /books/Книги/Mkit_55.djvu ) [19] => stdClass Object ( [location] => /books/Рефераты и Дипломы/telpirat.zip ) [20] => stdClass Object ( [location] => /books/Книги/tehnika.djvu ) [21] => stdClass Object ( [location] => /books/Книги/tehnika1.djvu ) [22] => stdClass Object ( [location] => /books/Книги/Color_marks_RadioComp_All.doc ) [23] => stdClass Object ( [location] => /books/Книги/Интегральные микросхемы.doc ) [24] => stdClass Object ( [location] => /books/Книги/p-cad.pdf ) [25] => stdClass Object ( [location] => /books/Книги/HWBOOK.PDF ) [26] => stdClass Object ( [location] => /books/Книги/ds18b20.pdf ) [27] => stdClass Object ( [location] => /books/Книги/Sprv-PMS.djv ) [28] => stdClass Object ( [location] => /books/Книги/zubchuk.djv ) [29] => stdClass Object ( [location] => /books/Книги/Справочник по телефонным аппаратам.pdf ) [30] => stdClass Object ( [location] => /books/Книги/Pered1.pdf ) [31] => stdClass Object ( [location] => /books/Книги/Pitan.pdf ) [32] => stdClass Object ( [location] => /books/Книги/Usilit.pdf ) ...............................
    пытаюсь произвести по нему посик c помоешью array_search
    но поиск ничего не возвращет не Falshe не key из массива
    PHP:
    1.    
    2. $location = "/books/Книги/Color_marks_RadioComp_All.doc";
    3. $key=array_search($location, $loc);
     
  2. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Почитайте документацию по этой функции. Вы ищите строку среди объектов.
     
    Doc нравится это.
  3. Doc

    Doc Активный пользователь

    С нами с:
    15 дек 2011
    Сообщения:
    15
    Симпатии:
    0
    Подскажите , пожалуйста, какую функцию или способ для этого использовать?
     
  4. Doc

    Doc Активный пользователь

    С нами с:
    15 дек 2011
    Сообщения:
    15
    Симпатии:
    0
    преобразовал в простой массив foreach($loc1 as $loc2) {$loc3[] = $loc2->location;}
    потом выполнил поиск
     
  5. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    PHP:
    1. $result = [];
    2. foreach( $locations as $key => $loc ) {
    3.     $loc2[$key] = $loc->property; // делаем одинаковые ключи, чтобы можно было легко найти объект.
    4. }
    5. // далее делаем поиск...
    6.  
    7. // или болеее элегантно...
    8. $location = 'то, что нужно найти'
    9. $result = array_filter( $loc1, function( $object ) use ($location) {
    10.     return $object->property === $location ;
    11. });
     
  6. Doc

    Doc Активный пользователь

    С нами с:
    15 дек 2011
    Сообщения:
    15
    Симпатии:
    0
    ну мне в принципе получать ключи нет необходимости, мне просто после рекурсивного сканирования каталога необходимо проверить есть ли фаил в базе или нет (то есть просто получить falshe при проверке из массива)