访问PHP数组

访问PHP数组,php,arrays,Php,Arrays,我肯定以前有人问过这个问题,但我似乎找不到答案 为此,我有一个如下所示的数组: Array ( [0] => Array ( [status] => active [sid] => 1 ) [1] => Array ( [status] => expired [sid] => 2 )

我肯定以前有人问过这个问题,但我似乎找不到答案

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

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

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

)

我希望能够做的是键入$arrayName[active],然后返回SID代码。我会像使用字典对象一样使用它。这就像我需要对数组重新编制索引,以便它是我需要的键/值对。我只是想知道是否有更简单的方法。通过循环或直接访问它

if($arrayName[0]['status'] == "active") {
   echo $arrayName[0]['sid'];
}
如果你想检查所有的小岛屿发展中国家

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

更直接的方法是将循环放入函数中,并返回所有活动会话ID的数组,通过循环或直接访问它

if($arrayName[0]['status'] == "active") {
   echo $arrayName[0]['sid'];
}
如果你想检查所有的小岛屿发展中国家

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

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

您应该将嵌套数组转换为单个关联数组。类似的内容应该以您的示例为例,将其转换为关联数组:

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

然后,您可以使用$assoc_array[expired]returns 2访问给定状态的sid。您应该将嵌套数组转换为单个关联数组。类似的内容应该以您的示例为例,将其转换为关联数组:

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

然后,您可以使用$assoc_array[expired]returns 2访问给定状态的sid。您可以使用此函数:

  function findActive($my_array){

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

    return false;

  }

您可以使用此功能:

  function findActive($my_array){

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

    return false;

  }

在看到其他人的解决方案后,我意识到这可能有点过头了,但我还是要把它扔出去:

$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
)
手册页:


在看到其他人的解决方案后,我意识到这可能有点过头了,但我还是要把它扔出去:

$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
)
手册页:


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

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

如果有3个子阵列和2个子阵列是“活动”的呢?数组键只能指向一个值,即使该值是另一个数组。如果有3个子数组和2个子数组处于“活动”状态,该怎么办?一个数组键只能指向一个值,即使该值是另一个数组。这就是我最后要做的-现在我可以像我想要的那样访问数组了。谢谢这就是我最后要做的——现在我可以随心所欲地访问阵列了。谢谢