2012-01-22 21 views
1

これは以前に尋ねられたと確信していますが、答えが見つからないようです。そのためにPHP配列へのアクセス

、私はこのようになります配列を持っている:私は行うことができるようにしたいのですがどのような

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

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

) 

は$ arrayName [「アクティブ」]を入力し、それがSIDコードを返すです。私はこれを辞書オブジェクトのように使います。それは、私が必要とするキーと値のペアになるように配列を再インデックスする必要があるようです。もっと簡単な方法があるのか​​どうか疑問に思っていただけです。

+1

機能を使用するのがベストです3個のサブアレイと2があるかどう 'アクティブ' は何をしていますか?配列キーは(たとえその値が別の配列であっても)1つの "値"を指すことができます。 –

答えて

3

あなたは変換する必要がありますネストされた配列を単一の連想配列に変換します。あなたはその後、$assoc_array["expired"]を使用することによって与えられたstatusためsidにアクセスすることができます

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

2を返す)

+0

これは私がやったことです - 今私は私が望むように配列にアクセスすることができます。ありがとう! – dpluscc

0

ループまたは直接アクセスします。

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

あなたはより直接的なアプローチは、単に機能でループを入れている

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

すべての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

REINDEXは

$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;  
}