2012-11-07 57 views
0

我目前有一段代碼是從數組中選擇多個值,並且只是想知道如何將它切換到僅從一個值中選擇一個值陣列。從PHP中選擇數組中的多個值切換到單一值PHP

到目前爲止,我試過將array_rand($status, rand(2,3))更改爲array_rand($status, rand(1,1)),但它給了我錯誤消息**爲foreach()**提供的無效參數。我該如何解決它?

$dateStart = new DateTime(); 
$dateStart->setDate(2012, 10, 01); 
$dateEnd = new DateTime(); 
$dateEnd->setDate(2012, 12, 01); 

$dates = array(); 
while ($dateStart < $dateEnd) { 
    $rand = array_rand($status, rand(2,3)); 
    $text = ''; 
    foreach ($rand as $key) $text .= $status[$key] . '<br />'; 

    printf("<li><div id='activity_date'>%s</div> 
      <div id='activity_box'> 
      <div id='activity_text'>" . $text . ' request</div></div></li>', 

    $dateStart->format("d/m/Y") 
    ); 

    $dateStart->modify(sprintf("+%d day",mt_rand(1, 10))); 
} 
+0

你知道哪個數組元素將被使用,或者你想要一個隨機數組元素嗎? 「Foreach」僅用於循環訪問數組,並對每個數組執行操作。 –

+0

我想要一個隨機數值'$ status' – methuselah

+0

然後@Gianps是正確的,你可以使用'array_rand' http://php.net/manual/en/function.array-rand.php –

回答

1

如果你想保持你的foreach,你必須確保你得到一個數組從array_rand回來。一種方式是這樣的:

$rand[] = array_rand($status); 
foreach($rand as $key) { ... } 

如果你總是隻想要一個隨機數組成員,那麼@Gianps有更好的方法。失去foreach

+0

我該如何實現這個到我的代碼? – methuselah

+0

@methuselah:我不太清楚你在問我什麼。 $ rand是一個數組。它從$狀態持有一個隨機密鑰。所以它可以與你已有的'foreach'循環一起使用。 – dnagirl

+0

我已經試過了,但是它在某些點不斷返回2個值 – methuselah

1
$rand = array_rand($status); 

我覺得自己有點啞。

改變你的代碼是這樣的:

$rand = array_rand($status); 
$text = $status[$rand] . '<br />'; 
+0

'array_rand'返回標量,而不是隻有一個密鑰被請求時的數組。每一個標量都會導致他所看到的錯誤。 – dnagirl

+0

@dnagirl好的,但對我來說是不正確的強制它成爲一個數組,而不是更改下面的代碼(請參閱我的編輯)。 –

+0

我同意,如果他確定他只會並且總是想要一個隨機結果。 – dnagirl