2012-01-20 70 views
12

例如,我有多維數組如下:獲取多維數組的關鍵?

$array = array (
    0 => 
    array (
     'id' => '9', 
     'gallery_id' => '2', 
     'picture' => '56475832.jpg' 
    ), 
    1 => 
    array (
     'id' => '8', 
     'gallery_id' => '2', 
     'picture' => '20083622.jpg' 
    ), 
    2 => 
    array (
     'id' => '7', 
     'gallery_id' => '2', 
     'picture' => '89001465.jpg' 
    ), 
    3 => 
    array (
     'id' => '6', 
     'gallery_id' => '2', 
     'picture' => '47360232.jpg' 
    ), 
    4 => 
    array (
     'id' => '5', 
     'gallery_id' => '2', 
     'picture' => '4876713.jpg' 
    ), 
    5 => 
    array (
     'id' => '4', 
     'gallery_id' => '2', 
     'picture' => '5447392.jpg' 
    ), 
    6 => 
    array (
     'id' => '3', 
     'gallery_id' => '2', 
     'picture' => '95117187.jpg' 
    ) 
); 

我怎樣才能得到的array(0,1,2,3,4,5,6)關鍵?

我已經嘗試了很多例子,但沒有爲我工作。

回答

12

這很簡單,你只需要使用array_keys()

$keys = array_keys($array); 

See it working

編輯爲了您的搜索任務,這功能應該做的工作:

function array_search_inner ($array, $attr, $val, $strict = FALSE) { 
    // Error is input array is not an array 
    if (!is_array($array)) return FALSE; 
    // Loop the array 
    foreach ($array as $key => $inner) { 
    // Error if inner item is not an array (you may want to remove this line) 
    if (!is_array($inner)) return FALSE; 
    // Skip entries where search key is not present 
    if (!isset($inner[$attr])) continue; 
    if ($strict) { 
     // Strict typing 
     if ($inner[$attr] === $val) return $key; 
    } else { 
     // Loose typing 
     if ($inner[$attr] == $val) return $key; 
    } 
    } 
    // We didn't find it 
    return NULL; 
} 

// Example usage 
$key = array_search_inner($array, 'id', 9); 

第四個參數$strict,如果TRUE,將使用嚴格類型比較。所以9將無法​​正常工作,您必須通過'9',因爲值存儲爲字符串。返回匹配,NULL如果值沒有找到,或者FALSE在錯誤中第一次出現的關鍵。請務必對返回值進行嚴格比較,因爲0,NULLFALSE都是可能的返回值,並且如果使用鬆散整數比較,它們都將計算爲0

+1

是的,它的工作,但,我需要在數組中搜索例如id = 9,並獲得數組鍵的返回id,其中id = 9 –

+0

@JurijsGuščins請參閱上面的編輯。 – DaveRandom

+0

完美地工作。真的很大thanx :) –

0

你的意思是這樣的:

 

function getKeys($array) 
{ 
    $resultArr = array(); 
    foreach($array as $subArr) { 
     $resultArr = array_merge($resultArr, $subArr); 
    }   
    return array_keys($resultArr); 
} 

 
+0

我想我沒有解釋我的情況。例如,我正在尋找數組,其中id = 9,我需要該wheres的數組鍵9,它將是0,如果我將查找id wheres 8,我會得到1 –

2

試試這個,我認爲它會幫助你。

foreach ($array as $key=>$value) 
{ 
    echo $key.'<br/>'; 

    echo $value['id'].'<br/>'; 
    echo $value['gallery_id'].'<br/>'; 
    echo $value['picture'].'<br/><br/>'; 
}