2017-04-20 49 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