2012-08-15 141 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