2017-02-22 44 views
2

У меня есть следующий массив:PHP Поиск многомерный массив для значения

Array ( 
    [0] => Array ([Country] => Americas [Out_Count] => 14) 
    [1] => Array ([Country] => Belgium [Out_Count] => 2) 
    [2] => Array ([Country] => China [Out_Count] => 33) 
    [3] => Array ([Country] => France [Out_Count] => 7) 
) 

У меня есть переменную следующим образом:

$los = 'Belgium'; 

То, что я хотел бы сделать, это поиск массива и вернуть значение Out_Count переменной.

я могу использовать следующее:

$key = array_search($los, array_column($outs, 'Country')); 

Это возвращает ключ, в этом случае 1 для Бельгии, но мне нужно значение Out_Count и я совершенно озадачен о том, как достичь этого.

Любые идеи и мысли приветствовались.

+1

if '$ los = 'Belgium';' then '$ los [0]' означает 'B' не' Бельгия'. – JustOnUnderMillions

+1

_to достичь this_ 'print $ outs [$ key] ['Out_Count'];' – JustOnUnderMillions

+0

Будет ли 'Country' быть уникальным в массиве? – AbraCadaver

ответ

4

Отличный выбор array_column()! Просто извлечь массив с Country в качестве ключа и Out_Count в качестве значения:

$los = 'Belgium'; 
$result = array_column($outs, 'Out_Count', 'Country')[$los]; 

Чтобы сделать это по-своему:

$los = 'Belgium'; 
$key = array_search($los, array_column($outs, 'Country')); 
$result = $outs[$key]['Out_Count']; 

Или:

$result = $outs[array_search($los, array_column($outs, 'Country'))]['Out_Count']; 
+0

Отлично - теперь, что, если Бельгия не уникальна !? –

0

Вы можете написать пользовательскую функцию например,

function my_custom_array_search($array, $search) 
{ 
    foreach($array as $single) 
    { 
    if($single['Country']==$search) 
    { 
     return $single['Out_Count']; 
    } 
    } 
    return ''; 
} 
1

Попробуйте это:

$array = array(
    array('Country' => 'Americas', 'Out_Count' => 14), 
    array('Country' => 'Belgium', 'Out_Count' => 2), 
    array('Country' => 'China', 'Out_Count' => 33), 
    array('Country' => 'France', 'Out_Count' => 7) 
); 


function search($array, $key, $value) { 
$results = array(); 
if (is_array($array)) { 
    if (isset($array[$key]) && $array[$key] == $value) { 
     $results[] = $array; 
    } 
    foreach ($array as $subarray) { 
     $results = array_merge($results, search($subarray, $key, $value)); 
    } 
} 
return $results; 
} 

Ouput:

$Out_Count = search($array, 'Country', 'Belgium'); 
echo $Out_Count[0]['Out_Count']; //print 2 

$Out_Count = search($array, 'Country', 'France'); 
echo $Out_Count[0]['Out_Count']; //print 7 

Таким образом, у вас есть полный массив, который вы искали, и вы можете получить доступ к нему.

print_r($Out_Count); 

Array 
(
[0] => Array 
    (
     [Country] => Belgium 
     [Out_Count] => 2 
    ) 

) 

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

  • Нет связанных вопросов^_^