如何找到php数组的新附加键值?

如何找到php数组的新附加键值?,php,arrays,Php,Arrays,我有一个类,存储有关照片的信息。为了让我保持诚实,它有一群公开的“能手”和“二传手”。当公开添加关于照片的评论时,如下所示: $photo->addComment('Blue'); $comments[] = array('comment'=>$new_comment,'time'=>$new_time,'user'=>$new_user); 该类将调用另一个函数,该函数将注释添加到私有注释数组中,如下所示: $photo->addComment('Blue')

我有一个类,存储有关照片的信息。为了让我保持诚实,它有一群公开的“能手”和“二传手”。当公开添加关于照片的评论时,如下所示:

$photo->addComment('Blue');
$comments[] = array('comment'=>$new_comment,'time'=>$new_time,'user'=>$new_user);
该类将调用另一个函数,该函数将注释添加到私有注释数组中,如下所示:

$photo->addComment('Blue');
$comments[] = array('comment'=>$new_comment,'time'=>$new_time,'user'=>$new_user);
确定新的
$key
的最佳方法是什么,新的
刚刚创建,以便
回送$comments[$key]['comment']将打印“蓝色”?

尝试以下操作:

$key = sizeof($comments) - 1
试试这个:

$key = sizeof($comments) - 1

您可以使用
end
功能()

如果您的目标是打印“蓝色”,这是您最直接的解决方案:

echo end($comments)['comment']


注意:本例使用PHP5.4()中引入的数组解引用。

您可以使用
end
函数()

如果您的目标是打印“蓝色”,这是您最直接的解决方案:

echo end($comments)['comment']


注意:此示例使用PHP 5.4()中引入的数组解引用。

对于更精确的方法,类似的方法可能会起作用:

$keys = array_keys($comments); // get just the keys
$reverse = array_reverse($keys); // reverse order
$lastKey = $keys[0]; // get what is now the first key

将允许在索引方面存在差距,以获得更准确的方法,类似的方法可能会奏效:

$keys = array_keys($comments); // get just the keys
$reverse = array_reverse($keys); // reverse order
$lastKey = $keys[0]; // get what is now the first key


将允许索引中的空白

这是一个技巧性问题吗?您可以让您的
addComment()
方法返回上次插入的索引。
$comment=end($comments);echo$comment['comment']
@NullUserException这更像我要找的。调用
键(end($comments))
就足够了吗?即使同时添加了另一条评论。@buster:no
key
以及
end
接受对数组的引用。这是一个技巧性问题吗?您可以让您的
addComment()
方法返回上次插入的索引。
$comment=end($comments);echo$comment['comment']
@NullUserException这更像我要找的。调用
键(end($comments))
就足够了吗?即使同时添加了另一条评论。@buster:no
key
以及
end
接受对数组的引用。
$comments=array('a'=>1)$评论[]='q';var_dump(注释)
它不会在所有情况下都起作用,但只有当数组的数字索引没有间隙时才起作用。
$comments[]=…
表明情况就是这样。@Salman A:看我的例子。我还使用了
$comments[]
-因此它不能保证任何
$comments=array('a'=>1)$评论[]='q';var_dump(注释)
它不会在所有情况下都起作用,但只有当数组的数字索引没有间隙时才起作用。
$comments[]=…
表明情况就是这样。@Salman A:看我的例子。我还使用了
$comments[]
-因此它不能保证任何值得添加php版本要求的东西。@Elliot B.:“使用相同的语法”--其中?@Elliot B.:在最初的帖子中,它是通用数组访问语法,从php 3开始就可以使用。您的代码使用PHP5.4中引入的数组解引用
$comments[$key]['comment']
不等于
end($comments)['comment']
添加php版本要求是值得的。@Elliot B.:“使用相同的语法”--其中?@Elliot B:在最初的帖子中,它是通用的数组访问语法,从php 3开始就可以使用。您的代码使用PHP5.4中引入的数组解引用
$comments[$key]['comment']
不等于
end($comments)['comment']
如果可以只
$lastKey=end($key),为什么要执行反向操作如果可以只执行
$lastKey=end($keys),为什么要执行反向操作我不能说我非常喜欢弄乱数组的内部指针。@NullUserException♦: 我也是,但这是一个微不足道的解决方案。如果此项符合要求,则没有理由过度复杂。在将新的
$key
提交到文件或sql之前,两个用户是否可以同时发布<代码>$key
对于2个用户可能相同。使用数据库中的自动增量列或序列以独特的方式寻址注释。我不能说我非常喜欢弄乱数组的内部指针。@NullUserException♦: 我也是,但这是一个微不足道的解决方案。如果此项符合要求,则没有理由过度复杂。在将新的
$key
提交到文件或sql之前,两个用户是否可以同时发布<代码>$key
对于2个用户可能相同。使用数据库中的自动增量列或序列以独特的方式寻址注释。