2016-08-24 4 views
1

У меня есть такой массив:Ищет значение в многомерном массиве в PHP

array(1) { 
    [36694730] => array(2) { 
     ["summonerId"] => int(36694730) 
     ["pages"] => array(6) { 
      [0] => array(4) { 
       ["id"] => int(35938350) 
       ["name"] => string(10) "Fervor ADC" 
       ["current"] => bool(true) 
       ["masteries"] => array(10) { 
        [0] => array(2) { ["id"] => int(6343) ["rank"] => int(1) } 
        [1] => array(2) { ["id"] => int(6131) ["rank"] => int(5) } 
        [2] => array(2) { ["id"] => int(6122) ["rank"] => int(1) } 
        [3] => array(2) { ["id"] => int(6331) ["rank"] => int(5) } 
        [4] => array(2) { ["id"] => int(6111) ["rank"] => int(5) } 
        [5] => array(2) { ["id"] => int(6141) ["rank"] => int(1) } 
        [6] => array(2) { ["id"] => int(6312) ["rank"] => int(5) } 
        [7] => array(2) { ["id"] => int(6322) ["rank"] => int(1) } 
        [8] => array(2) { ["id"] => int(6162) ["rank"] => int(1) } 
        [9] => array(2) { ["id"] => int(6151) ["rank"] => int(5) } 
       } 
      }[1] => array(4) { 
       ["id"] => int(35938366) 
       ["name"] => string(15) "Thunderlord ADC" 
       ["current"] => bool(false) 
       ["masteries"] => array(10) { 
        [0] => array(2) { ["id"] => int(6121) ["rank"] => int(1) } 
        [1] => array(2) { ["id"] => int(6343) ["rank"] => int(1) } 
        [2] => array(2) { ["id"] => int(6131) ["rank"] => int(5) } 
        [3] => array(2) { ["id"] => int(6331) ["rank"] => int(5) } 
        [4] => array(2) { ["id"] => int(6111) ["rank"] => int(5) } 
        [5] => array(2) { ["id"] => int(6141) ["rank"] => int(1) } 
        [6] => array(2) { ["id"] => int(6312) ["rank"] => int(5) } 
        [7] => array(2) { ["id"] => int(6322) ["rank"] => int(1) } 
        [8] => array(2) { ["id"] => int(6362) ["rank"] => int(1) } 
        [9] => array(2) { ["id"] => int(6352) ["rank"] => int(5) } 

       } 
      }[2] => array(4) { 
       ["id"] => int(35938367) 
       ["name"] => string(7) "Twisted" 
       ["current"] => bool(false) 
       ["masteries"] => array(10) { 
        [0] => array(2) { ["id"] => int(6121) ["rank"] => int(1) } 
        [1] => array(2) { ["id"] => int(6114) ["rank"] => int(5) } 
        [2] => array(2) { ["id"] => int(6131) ["rank"] => int(5) } 
        [3] => array(2) { ["id"] => int(6343) ["rank"] => int(1) } 
        [4] => array(2) { ["id"] => int(6331) ["rank"] => int(5) } 
        [5] => array(2) { ["id"] => int(6142) ["rank"] => int(1) } 
        [6] => array(2) { ["id"] => int(6312) ["rank"] => int(5) } 
        [7] => array(2) { ["id"] => int(6322) ["rank"] => int(1) } 
        [8] => array(2) { ["id"] => int(6351) ["rank"] => int(5) } 
        [9] => array(2) { ["id"] => int(6362) ["rank"] => int(1) } 

       } 
      }[3] => array(4) { 
       ["id"] => int(35938368) 
       ["name"] => string(13) "CaptainJungle" 
       ["current"] => bool(false) 
       ["masteries"] => array(10) { 
        [0] => array(2) { ["id"] => int(6121) ["rank"] => int(1) } 
        [1] => array(2) { ["id"] => int(6343) ["rank"] => int(1) } 
        [2] => array(2) { ["id"] => int(6114) ["rank"] => int(5) } 
        [3] => array(2) { ["id"] => int(6331) ["rank"] => int(5) } 
        [4] => array(2) { ["id"] => int(6321) ["rank"] => int(1) } 
        [5] => array(2) { ["id"] => int(6141) ["rank"] => int(1) } 
        [6] => array(2) { ["id"] => int(6312) ["rank"] => int(5) } 
        [7] => array(2) { ["id"] => int(6134) ["rank"] => int(5) } 
        [8] => array(2) { ["id"] => int(6362) ["rank"] => int(1) } 
        [9] => array(2) { ["id"] => int(6352) ["rank"] => int(5) } 

       } 
      }[4] => array(4) { 
       ["id"] => int(35938369) 
       ["name"] => string(6) "TeeTop" 
       ["current"] => bool(false) 
       ["masteries"] => array(10) { 
        [0] => array(2) { ["id"] => int(6343) ["rank"] => int(1) } 
        [1] => array(2) { ["id"] => int(6131) ["rank"] => int(5) } 
        [2] => array(2) { ["id"] => int(6122) ["rank"] => int(1) } 
        [3] => array(2) { ["id"] => int(6331) ["rank"] => int(5) } 
        [4] => array(2) { ["id"] => int(6111) ["rank"] => int(5) } 
        [5] => array(2) { ["id"] => int(6312) ["rank"] => int(5) } 
        [6] => array(2) { ["id"] => int(6142) ["rank"] => int(1) } 
        [7] => array(2) { ["id"] => int(6322) ["rank"] => int(1) } 
        [8] => array(2) { ["id"] => int(6351) ["rank"] => int(5) } 
        [9] => array(2) { ["id"] => int(6362) ["rank"] => int(1) } 

       } 
      }[5] => array(4) { 
       ["id"] => int(35938370) 
       ["name"] => string(13) "ThreshShields" 
       ["current"] => bool(false) 
       ["masteries"] => array(10) { 
        [0] => array(2) { ["id"] => int(6223) ["rank"] => int(1) } 
        [1] => array(2) { ["id"] => int(6241) ["rank"] => int(1) } 
        [2] => array(2) { ["id"] => int(6343) ["rank"] => int(1) } 
        [3] => array(2) { ["id"] => int(6312) ["rank"] => int(5) } 
        [4] => array(2) { ["id"] => int(6322) ["rank"] => int(1) } 
        [5] => array(2) { ["id"] => int(6332) ["rank"] => int(5) } 
        [6] => array(2) { ["id"] => int(6212) ["rank"] => int(5) } 
        [7] => array(2) { ["id"] => int(6231) ["rank"] => int(5) } 
        [8] => array(2) { ["id"] => int(6363) ["rank"] => int(1) } 
        [9] => array(2) { ["id"] => int(6352) ["rank"] => int(5) } 

       } 
      } 
     } 
    } 
} 

Я хочу увидеть, если элемент с определенным ключом «именем», (например, «Рвение ADC») существует в нем, чтобы использовать его для проверки членства. Как я могу найти его, зная, что массив может иметь больше значений? [0] до [4] здесь количество страниц и варьируется от 1 до 20.

+0

Хотите ли вы получить индекс, или просто хотите знать, что существует или нет? –

+0

Просто, если он существует или нет. – user1114748

ответ

1

// Воля познает значение существует или нет в массиве

echo in_array_r("Fervor ADC", $array) ? 'found' : 'not found'; 

// функции найти значение существуют или нет в массиве.

function in_array_r($needle, $haystack, $strict = false) { 
    foreach ($haystack as $item) { 
     if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) { 
      return true; 
     } 
    } 

    return false; 
} 
+0

Просто нужно было использовать $ strict = true, и это работает как шарм, спасибо вам большое! – user1114748

1

Инициализировать результат и поиск по ключевому слову

$result = null; 
$searchName = "Fervor ADC" 

Петля над значениями в «страницы» ключ:

foreach ($your_array['36694730']['pages'] as $x) { 

    // if you find one that matches your search term, set your result to that one 
    if ($x['name'] == $searchName) { 
     $result = $x; 

     // then stop the loop; you're done. 
     break; 
    } 
} 

Тогда, если вы просто хотите, чтобы убедиться, что она существует

if ($result) 

будет работать. И если вам в итоге нужно что-то сделать с данными, связанными с этим именем, тогда вы получите его в $result.

+0

Этот человек работает, спасибо. – user1114748

Смежные вопросы