如何使用php获取mongodb中最后插入的数组键?
我有一个收藏如何使用php获取mongodb中最后插入的数组键?,php,arrays,mongodb,codeigniter,Php,Arrays,Mongodb,Codeigniter,我有一个收藏 [_id] => 1 [user_id] => 2 [work_details] => Array ( [0] => Array ( [login_date] => 2015-12-22 [login_time] => 16:40:00 [l
[_id] => 1
[user_id] => 2
[work_details] => Array
(
[0] => Array
(
[login_date] => 2015-12-22
[login_time] => 16:40:00
[log_out_time] =>
)
[1] => Array
(
[login_date] => 2015-12-23
[login_time] => 11:40:00
[log_out_time] =>
)
)
对于更新,我使用以下查询
$collect->update(array("user_id"=>(int)$user_id,"work_details.0.login_date"=>'2015-12-22'),array('$push' => array("work_details.0.log_out_time" =>$logout_time)));
所以为了更新最后一条记录,我需要知道最后一个键值
我需要更新工作的注销时间详细信息[1]。如何使用php获取mongodb中最后插入的数组键提供数组最后一个元素的值。它还将数组的内部指针移到末尾,以便在使用
它将为您提供相同元素的键
因此:
请注意,如果没有首先使用end(),key()将不会返回最后一个键。工作代码
<?php
$work_details = Array (
0 => Array
(
'login_date' => '2015-12-22',
'login_time' => '16:40:00',
'log_out_time' => '',
),
1 => Array
(
'login_date' => '2015-12-23',
'login_time' => '11:40:00',
'log_out_time' => '',
)
);
//get last item of an array
$last_item = end($work_details);
//set pointer to fist item
reset($work_details);
$last_item_key = null;
//compare value of last item with all values of an array, if found equal, return that key
foreach($work_details as $key => $value) {
if($value === $last_item) {
$last_item_key = $key;
break;
}
}
echo $last_item_key;
?>
如何在mongodbYou中实现这一点你说“为了更新最后一条记录,我需要知道最后一个键值”,你在你的work\u details数组中使用这个方法来获取它的最后一个键值。运行$last\u item=end($work\u details)后,您似乎已经拥有了所需的其余部分代码>只需使用$last\u item\u key=key($work\u details)
。不需要循环和搜索。看到我的答案了吗
<?php
$work_details = Array (
0 => Array
(
'login_date' => '2015-12-22',
'login_time' => '16:40:00',
'log_out_time' => '',
),
1 => Array
(
'login_date' => '2015-12-23',
'login_time' => '11:40:00',
'log_out_time' => '',
)
);
//get last item of an array
$last_item = end($work_details);
//set pointer to fist item
reset($work_details);
$last_item_key = null;
//compare value of last item with all values of an array, if found equal, return that key
foreach($work_details as $key => $value) {
if($value === $last_item) {
$last_item_key = $key;
break;
}
}
echo $last_item_key;
?>