无法获取数组PHP中的最后一个键

无法获取数组PHP中的最后一个键,php,arrays,key,Php,Arrays,Key,我在应用程序中使用数组作为状态 $status =array("New lead", "Email reply", "Phone reply" ,"In conversation", "Invoice generated", "Full payment", "Partial payment", "Decline"); 使用foreach循环生成HTML,下面是代码 foreach ($status as $value){ $selected = (int)$posts->statu

我在应用程序中使用数组作为状态

$status =array("New lead", "Email reply", "Phone reply" ,"In conversation", "Invoice generated", "Full payment", "Partial payment", "Decline");
使用
foreach
循环生成
HTML
,下面是代码

foreach ($status as $value){
   $selected = (int)$posts->status == key($status) ?  "selected" : "";
   echo '<option value="'.key($status).'" '.$selected .'>'.$value.'</option>';
}
foreach($status作为$value){
$selected=(int)$posts->status==键($status)?“selected”:“;
回显“.$value.”;
}
我得到的结果是

   <option value="1">New lead</option>
   <option value="2">Email reply</option>
   <option value="3">Phone reply</option>
   <option value="4">In conversation</option>
   <option value="5" selected="">Invoice generated</option>
   <option value="6">Full payment</option>
   <option value="7">Partial payment</option>
   <option value="">Decline</option>
新的潜在客户
电子邮件回复
电话答覆
谈话中
生成的发票
全额付款
部分付款
减少
我没有收到拒绝状态的最后一个
。需要您的帮助。

foreach($key=>$value状态){
foreach ($status as $key => $value){
   $selected = (int)$posts->status == key($status) ?  "selected" : "";
   echo '<option value="'.$key.'" '.$selected .'>'.$value.'</option>';
}
$selected=(int)$posts->status==键($status)?“selected”:“; 回显“.$value.”; }

这行吗?

此代码必须有效:

foreach ($status as $key => $value){
   $selected = $posts->status == $key ?  "selected='selected'" : "";
   echo '<option value="'. $key.'" '.$selected .'>'.$value.'</option>';
}
foreach($key=>$value状态){
$selected=$posts->status=$key?“selected='selected'”:;
回显“.$value.”;
}
如果要使用键功能,必须使用带电流的while循环:

while ($value = current($status)) {
    $selected = (int)$posts->status == key($status) ?  "selected" : "";
    echo '<option value="'.key($status).'" '.$selected .'>'.$value.'</option>';
    next($status);
}
while($value=当前($status)){
$selected=(int)$posts->status==键($status)?“selected”:“;
回显“.$value.”;
下一个(地位);
}
阅读以下php参考资料:

代码:

结果:

<option value="0" selected>New lead</option>
<option value="1" >Email reply</option>
<option value="2" >Phone reply</option>
<option value="3" >In conversation</option>
<option value="4" >Invoice generated</option>
<option value="5" >Full payment</option>
<option value="6" >Partial payment</option>
<option value="7" >Decline</option>
新的潜在客户
电子邮件回复
电话答覆
谈话中
生成的发票
全额付款
部分付款
减少

问题是,$status数组的指针已移动到下一项,因此,您将获得数组中下一个值的键,而不是$value的键。更多详情:

$status=array(“新潜在客户”、“电子邮件回复”、“电话回复”、“对话中”、“发票生成”、“全额付款”、“部分付款”、“拒绝”);
回声';
foreach($状态为$key=>$value){
$selected=(int)$posts->status==键($status)?“selected”:“;
回显“.$value.”;
}
回声';

数组的第一个值键是0,因为数组索引总是从0开始

测试此代码$selected=(int)$posts->status==Key($status)?“selected='selected'”:@你是怎么弄到其他钥匙的?:)除了阿米尔·莫森的答案外,这一页上的所有答案都有缺陷。请尽快将绿色勾选切换到他的答案。其余答案将在100%的情况下使您选择的值出错。加载并运行此演示:然后使用浏览器的“查找”工具搜索选定的
,然后查看输出框,查看其他答案是如何失败的。此答案应该是对问题的注释。此答案不正确。否决票。请参见我对问题的评论,以了解故障的说明。阿米尔做对了,因为他测试了他的解决方案并建立了一个在线演示。请在“未接受”时删除您的答案,因为更正它将创建一个重复的帖子,这只是页面膨胀。此答案不正确。否决票。请参见我对问题的评论,以了解故障的说明。阿米尔做对了,因为他测试了他的解决方案并建立了一个在线演示。请删除您的答案,因为更正它将创建一个重复的帖子,这只是页面膨胀。
$status =array("New lead", "Email reply", "Phone reply" ,"In conversation", "Invoice generated", "Full payment", "Partial payment", "Decline");
 echo '<select>';
foreach ($status as $key => $value){
   $selected = (int)$posts->status == key($status) ?  "selected" : "";
   echo '<option value="'.$key.'"'.$selected .'>'.$value.'</option>';
}
 echo '</select>';