2012-01-22 57 views
1

我確信這已經被問過,但我似乎無法找到答案。訪問一個PHP數組

爲此,我有一個數組,看起來像這樣:

Array 
(
    [0] => Array 
     (
      [status] => active 
      [sid] => 1 
     ) 

    [1] => Array 
     (
      [status] => expired 
      [sid] => 2 
     ) 

) 

我想什麼,能夠做的就是輸入$ arrayName中的[「主動」],並將其返回的SID碼。我將使用它像一個類似的字典對象。這就像我需要重新索引數組,以便它是我需要的鍵/值對。我只是想知道是否有更簡單的方法來做到這一點。

+1

如果什麼有3子陣和2是 '主動'?數組鍵只能指向一個「值」(即使該值是另一個數組)。 –

回答

3

應該轉換您的嵌套數組放入單個關聯數組中。這樣的事情應該把你的榜樣,把它變成一個關聯數組:

$assoc_array = array(); 
foreach($example_array as $values) { 
    $assoc_array[$values["status"]] = $values["sid"]; 
} 

然後,您可以通過使用$assoc_array["expired"](返回2)訪問sid對於給定status

+0

這就是我最終做的 - 現在我可以像我想要的那樣訪問數組。謝謝! – dpluscc

0

通過循環或直接訪問它。

if($arrayName[0]['status'] == "active") { 
    echo $arrayName[0]['sid']; 
} 

如果要檢查所有的SID

foreach($arrayName as $item) { 
    if($item['status'] == "active") { 
    echo $item['sid']; 
    } 
} 

更直接的方法是隻把循環的功能和返回所有活動會話ID數組

0
 

$sidArr = array(); 
foreach($yourArr as $val) { 
    if("active" == $val["status"]) { 
    array_push($sidArr, $val["sid"]); 
    } 
} 
 
1

您可以使用此功能:

function findActive($my_array){ 

    foreach($my_array as $array){ 
     foreach($array as $val){ 
     if($val['status']==='active'){ 
      return $val['sid']; 
     } 
     } 
    } 

    return false; 

    } 
+0

我也喜歡這個..謝謝! – dpluscc

2

看到別人的解決方案之後,我意識到這可能是一個矯枉過正位,但我還只是要去把它扔在那裏:

$foo = array(
    array('status' => 'active', 'sid' => 1), 
    array('status' => 'expired', 'sid' => 2), 
); 

// Get all the 'status' elements of each subarray 
$keys = array_map(function($element) { 
    return $element['status']; 
}, $foo); 

// Get all the 'sid' elements of each subarray 
$values = array_map(function($element) { 
    return $element['sid']; 
}, $foo); 

// Combine them into a single array, with keys from one and values from another 
$bar = array_combine($keys, $values); 

print_r($bar); 

它打印:

Array 
(
    [active] => 1 
    [expired] => 2 
) 

手冊頁:

0

重新索引將是最好的

$arrayName = array() 
foreach ($data_array as $data) 
    $arrayName[$data['status']]=$data['sid']; 

或者使用功能

function get_sid($status) 
{ 
    global $data_array; 
    foreach ($data_array as $data) { 
     if ($data['status']==$status) 
      return $data['sid']; 
    } 
    return false;  
}