【问题标题】:How do I find the newly appended key value of a php array?如何找到 php 数组的新附加键值?
【发布时间】:2012-12-27 22:27:00
【问题描述】:

我有一个存储照片信息的类。它有一堆公共的“getter”和“setter”让我诚实。当像这样公开添加有关照片的评论时:

$photo->addComment('Blue');

该类将调用另一个函数,将注释添加到一个私有 cmets 数组中,如下所示:

$comments[] = array('comment'=>$new_comment,'time'=>$new_time,'user'=>$new_user);

确定刚刚创建的新$key 以便echo $comments[$key]['comment']; 将打印“蓝色”的最佳方法是什么?

【问题讨论】:

  • 这是一个技巧问题吗?最后。
  • 你可以让你的 addComment() 方法返回最后插入的索引。
  • $comment = end($comments); echo $comment['comment'];
  • @NullUserException 这更像我正在寻找的。打电话给key(end($comments)) 就够了吗?即使同时添加了另一条评论。
  • @buster:不。 keyend 接受对数组的引用。

标签: php arrays


【解决方案1】:

试试这个:

$key = sizeof($comments) - 1

【讨论】:

  • $comments = array('a' => 1); $comments[] = 'q'; var_dump($comments); 它不适用于所有情况,但前提是数组是无间隙的数字索引
  • $comments[] = ... 建议是这种情况。
  • @Salman A:看看我的例子。我也使用了$comments[] - 所以它不能保证任何事情
【解决方案2】:

您可以使用end 函数(http://php.net/manual/en/function.end.php)。

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

echo end($comments)['comment']

注意:此示例使用 PHP 5.4 (http://www.php.net/archive/2011.php#id2011-06-28-1) 中引入的数组解引用。

【讨论】:

  • 值得添加php版本要求。
  • @Elliot B.:“使用相同的语法”---在哪里?
  • @Elliot B.:在原始帖子中,它是通用数组访问语法,从 php 3 开始有效。您的代码使用 php 5.4 中引入的数组取消引用。 $comments[$key]['comment'] 不等于 end($comments)['comment']
【解决方案3】:
end($comments);
$key = key($comments);

【讨论】:

  • 我不能说我非常喜欢搞乱数组的内部指针。
  • @NullUserException♦:我也是,但这是一个微不足道的解决方案。当这个符合要求时,没有理由过于复杂。
  • 在新的$key 提交到文件或sql 之前,两个用户是否可以同时发帖?
  • @buster:是的。 $key 可能对 2 个用户相同。使用 DB 中的自动增量列或序列以独特的方式寻址到 cmets。
【解决方案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

将允许索引中的空白

【讨论】:

  • 如果可以$lastKey = end($keys);,为什么要执行反向操作
猜你喜欢
  • 2018-01-24
  • 2016-07-22
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2012-03-14
  • 2018-03-08
  • 2017-05-22
相关资源
最近更新 更多