2012-01-30 12 views
6

Say mam tablicę takich jak:array_filter i wielowymiarowa tablica

$arr[] = array("id" => 11, "name" => "First"); 
$arr[] = array("id" => 52, "name" => "Second"); 
$arr[] = array("id" => 6, "name" => "Third"); 
$arr[] = array("id" => 43, "name" => "Fourth"); 

Chciałbym uzyskać nazwę korespondent pewnej ID tak, że mogę zrobić:

$name = findNameFromID(43); 

i inne, na przykład "Czwarty".

Pomyślałem o użyciu array_filter, ale jestem trochę zatrzymany, jak poprawnie przekazać zmienną. Widziałem pytania takie jak this one, ale wydaje mi się, że nie potrafię rozszerzyć rozwiązania na tablicę wielowymiarową.

Każda pomoc?

Odpowiedz

11
findNameFromID($array,$ID) { 
    return array_values(array_filter($array, function($arrayValue) use($ID) { return $arrayValue['id'] == $ID; })); 
} 

$name = findNameFromID($arr,43); 
if (count($name) > 0) { 
    $name = $name[0]['name']; 
} else { 
    echo 'No match found'; 
} 

PHP 5.3.0 i powyżej

EDIT

lub wariantu:

findNameFromID($array,$ID) { 
    $results = array_values(array_filter($array, function($arrayValue) use($ID) { return $arrayValue['id'] == $ID; })); 
    if (count($results) > 0) { 
     return $name[0]['name']; 
    } else { 
     return FALSE; 
    } 
} 

$name = findNameFromID($arr,43); 
if (!$name) { 
    echo 'No match found'; 
} 

EDIT # 2

I od PHP 5.5, możemy użyj array_column()

findNameFromID($array, $ID) { 
    $results = array_column($array, 'name', 'id'); 
    return (isset($results[$ID])) ? $results[$ID] : FALSE; 
} 
Powiązane problemy