2012-08-15 143 views
0

我正在閱讀關於php的書,這裏是打印數組的元素的任務取決於它們的類型; 所以我創建陣列$arr = array (5, 'str', 4, 'str1', -100, 10);,然後使用foreach聲明我試圖打印是整數根據類型返回數組元素

foreach ($arr1 as is_integer($arrelem)) 
    { 
     print $arrelem; 

    } 

元素但是,這給了我一個錯誤Fatal error: Can't use function return value in write context in。 我敢肯定有一些錯誤的算法,但我需要關於如何理解這些alhorighms

+0

你可以通過搜索foreach在PHP中的工作方式來解決這個問題 http://php.net/manual/en/control-structures.foreach.php – amd 2012-08-15 11:36:01

+0

我已經這樣做了,我可以使用這個語句打印所有數組元素,但如何打印只有一些元素的算法,我不明白 – 2012-08-15 11:39:02

回答

5

foreach ($arr1 as is_integer($arrelem))不允許

寫像這樣的建議:

foreach ($arr1 as $arrelem) { 
    if (is_integer($arrelem)) { 
     print "int:" . $arrelem; 
    } else if (is_string($arrelem)) { 
     print "string:" . $arrelem; 
    } else { 
     print "other:" . $arrelem; 
    } 
} 

如果這是調試你也可以用var_dump,這會給你類型的一個變量。

+0

我可以這樣做嗎? ($ arr1 as $ array_elem){ if(is_integer($ array_elem)){ print $ array_elem; } print $ arrelem; elseif(is_string($ array_elem)){print $ array_elem;} }' – 2012-08-15 11:34:32

+0

修改我的代碼示例以說明字符串。 – Halcyon 2012-08-15 11:39:42

0

這是不正確的語法,關鍵字後,因爲你可能只放置變量的名稱。

0

可以使用此示例

$arr = array(5,'str',4,'str1',- 100,10); 

實施例1 - Waygood

foreach ($arr as $var) { 
    print $var . ": "; 
    echo gettype($var), "\n"; 
} 

實施例2

foreach ($arr as $var) { 
    print $var . ": "; 
    if (is_integer($var)) { 
     if ($var < 0) { 
      print "Negative Integer \n"; 
     } else { 
      print "Positive Integer \n"; 
     } 
    } 
} 
+1

或使用gettype()而不是所有的IF語句 – Waygood 2012-08-15 11:46:54

+0

+1 Waygood ...我會用更好的示例更新我的答案 – Baba 2012-08-15 11:49:27

3
$integerValues = array_filter($array1,'is_integer'); 
$booleanValues = array_filter($array1,'is_bool'); 

+0

+1我喜歡這種不同的方法:-) – Waygood 2012-08-15 11:53:59