2013-08-22 49 views
1

我面臨一個小問題,它現在正在讓我瘋狂。 這可能是簡單而愚蠢的,但很好..我沒有太多的咖啡。計數對象數組

這是我的數組,當我打印:

stdClass Object ( 
[SelectEmployeeResult] => stdClass Object ( 
[string] => Marijke Hakvoort)) 

我打印字符串轉換成選擇菜單<select></select>

我這樣做是這樣:

$employee = array ('pkrelation' => $_SESSION['username']); 
$employeeResponse = $wcfclient->SelectEmployee($employee); 
print_r($employeeResponse); 
?> 
<td><label>User:</label></td> 
<td><select name="gebruiker"> 
<?php 
if(count($employeeResponse) < 2){ 
    foreach($employeeResponse->SelectEmployeeResult as $key => $value){ 
     echo "<option>".$value."</option>"; 
    } 
} 

但現在問題:當我在對象數組中有兩個用戶時,像這樣:那麼它不會在我的select選項標籤中顯示名稱,而只是'數組'。現在

stdClass Object ( 
[SelectEmployeeResult] => stdClass Object ( 
[string] => Array ( 
[0] => Marijke Hakvoort 
[1] => User Test))) 

,我可以通過使用此代碼顯示該用戶:

if(count($employeeResponse) > 0){ 
    foreach($employeeResponse->SelectEmployeeResult as $key => $value){ 
     foreach($value as $key1 => $value1){ 
      echo "<option>".$value1."</option>"; 
     } 
    } 
} 

但是,如果我刪除一個用戶,它不會告訴我什麼了。 計數功能似乎並沒有在這種情況下,我想要的方式.. 請幫助!

回答

3

你必須改變代碼點點你的代碼是:

foreach($employeeResponse->SelectEmployeeResult as $key => $value){ 
    echo "<option>".$value."</option>"; 
} 

將其更改爲:

foreach($employeeResponse->SelectEmployeeResult as $key => $value){ 
    if(is_array($value)){ 
     foreach($value as $k1 => $v1){ 
     echo "<option>".$v1."</option>";     
     } 
    }else{ 
     echo "<option>".$value."</option>"; 
    } 
} 
+0

哇,謝謝!甚至沒有想到這樣!你救了我的一天,先生。 – Matheno

0
empty($arrayName) 

嘗試陣列空

+0

爲什麼這將工作嗎?數組永遠不會是空的,因爲它總是會有一個或多個值 – Matheno

+0

@Ashish,foreach只會迭代如果數組/對象有一個或多個值 – Shushant

+0

@Marijke數組可能是空的運行下面的代碼'$ array = array(); var_dump(empty($ array));' – Shushant

2

也許類似檢查這個?

if (isset($employeeResponse->SelectEmployeeResult->string) && count($employeeResponse->SelectEmployeeResult->string) > 0) { 
if (TRUE == is_array($employeeResponse->SelectEmployeeResult->string)) { 
    foreach ($employeeResponse->SelectEmployeeResult->string as $value) { 
     echo "<option>" . $value . "</option>"; 
    } 
} elseif (TRUE == is_string($employeeResponse->SelectEmployeeResult->string)) { 
    echo "<option>" . $employeeResponse->SelectEmployeeResult->string . 
    "</option>"; 
} } 

(抱歉怪異佈局...在計算器格式是不是對我很好:()

+0

Vineet1982 alread y給了我一個很好的答案,但你的也很好:)謝謝! – Matheno

+0

我加了正確的數字,因爲你說你也有問題;) –