访问PHP数组

时间:2012-01-22 07:00:37

标签: php arrays

我确信之前已经问过,但我似乎无法找到答案。

为此,我有一个如下所示的数组:

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

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

)

我希望能够输入$ arrayName [“active”]并返回SID代码。我会像使用各种字典对象一样使用它。这就像我需要重新索引数组,以便它是我需要的键/值对。我只是想知道是否有更简单的方法来做到这一点。

6 个答案:

答案 0 :(得分:3)

您应该将嵌套数组转换为单个关联数组。这样的事情应该以你的例子为例,把它变成一个关联数组:

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

然后,您可以使用sid(返回status

访问给定$assoc_array["expired"]的{​​{1}}

答案 1 :(得分: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
)

手册页:

答案 2 :(得分:1)

您可以使用此功能:

  function findActive($my_array){

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

    return false;

  }

答案 3 :(得分:0)

通过循环或直接访问它。

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

如果要检查所有SID

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

更直接的方法是将循环放在函数中并返回所有活动会话ID的数组

答案 4 :(得分:0)


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

答案 5 :(得分: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;    
}