我确信之前已经问过,但我似乎无法找到答案。
为此,我有一个如下所示的数组:
Array
(
[0] => Array
(
[status] => active
[sid] => 1
)
[1] => Array
(
[status] => expired
[sid] => 2
)
)
我希望能够输入$ arrayName [“active”]并返回SID代码。我会像使用各种字典对象一样使用它。这就像我需要重新索引数组,以便它是我需要的键/值对。我只是想知道是否有更简单的方法来做到这一点。
答案 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;
}