2017-04-20 83 views
1

我使用状态的数组最后的关键在我的应用没有得到数组PHP

$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>'; 
} 

和我得到的输出是

<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> 

我不是衰落状态得到最后key。需要你的帮助。

+0

测试选择了这个代码$ =(INT)$ posts->状态==键($状态)? “selected ='selected'”:“”; –

+0

@aje https://eval.in/779392 - 你是如何得到其他密钥的? :) – splash58

+0

除Amir Mohsen之外,此页面上的所有答案都是FLAWED。请尽快将绿色标记切换到他的答案。其余的答案会在100%的时间内使您的选定值错误。加载并运行此演示:http://sandbox.onlinephpfunctions.com/code/a8c004a525989e86fda73c864faea8065ebc3fdd然后使用浏览器的查找工具搜索'selected',然后查看输出框以查看其他答案失败的方式。 – mickmackusa

回答

1
foreach ($status as $key => $value){ 
    $selected = (int)$posts->status == key($status) ? "selected" : ""; 
    echo '<option value="'.$key.'" '.$selected .'>'.$value.'</option>'; 
} 

这是否行得通?

+0

thax @Usman这正是我想要的。 – aje

+0

这个答案不正确。 Downvote。看到我对这个问题的评论以证明这个错误。阿米尔说得没错,因为他测试了他的解决方案并建立了在线演示。请在“未接受”时删除您的答案,因为更正它会创建一个重复的帖子,这只是页面膨胀。 – mickmackusa

3

此代码必须工作:

foreach ($status as $key => $value){ 
    $selected = $posts->status == $key ? "selected='selected'" : ""; 
    echo '<option value="'. $key.'" '.$selected .'>'.$value.'</option>'; 
} 

,如果你想使用的关键功能,你必须使用while循环电流:

while ($value = current($status)) { 
    $selected = (int)$posts->status == key($status) ? "selected" : ""; 
    echo '<option value="'.key($status).'" '.$selected .'>'.$value.'</option>'; 
    next($status); 
} 

阅读本PHP参考:http://php.net/manual/en/function.key.php

代码:https://eval.in/779400

结果:

<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> 
-1
$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>'; 

阵列的第一价值关键是0,因为数组的索引总是从0

+0

这个答案不正确。 Downvote。看到我对这个问题的评论以证明这个错误。阿米尔说得没错,因为他测试了他的解决方案并建立了在线演示。请删除您的答案,因为更正它会创建一个重复的帖子,这只是页面膨胀。 – mickmackusa