PHP函数,用于检查关联数组中有多少个整数
我需要帮助解决我大学考试中的问题。它类似于PHP中的“”函数,用于检查关联数组中有多少个整数,数据不是通过参数传输的,而是作为全局变量“”传输的。谢谢 尝试以下操作:PHP函数,用于检查关联数组中有多少个整数,php,arrays,function,associative,Php,Arrays,Function,Associative,我需要帮助解决我大学考试中的问题。它类似于PHP中的“”函数,用于检查关联数组中有多少个整数,数据不是通过参数传输的,而是作为全局变量“”传输的。谢谢 尝试以下操作: <?php $a[0] = 1; $a[1] = 'aam'; $a[2] = 5; $a[3] = 'c'; $result = count($a); $totalints = 0; for ($i = 0; $i < $result; $i++) { if (is_int($a[$i])) {
<?php
$a[0] = 1;
$a[1] = 'aam';
$a[2] = 5;
$a[3] = 'c';
$result = count($a);
$totalints = 0;
for ($i = 0; $i < $result; $i++)
{
if (is_int($a[$i]))
{
$totalints++;
}
}
echo "Total number of integers: " . $totalints;
?>
这是一个非常狡猾的问题。首先,PHP不是强类型的,所以“这是一个整数”的概念并不明显。例如,以下数组中有多少个整数
$array = array(5, "6", "7abc", 8.0, "9.0xyz", false);
如果我们严格地看类型,有一个整数。如果我们比较宽松(即允许隐式类型强制),则有六种。您可以使用任意函数来确定给定情况下的某个值是否为整数。我觉得这个问题本身并没有足够的信息来给出一个答案,但我想在你们的讲座中会给出更多的上下文
这个问题还有一个问题。“关联数组中有多少个整数”对“in”没有明确的定义,或者更确切地说,对数组的真实结构没有定义。请考虑以下内容:
class Foo {
public $x;
public $y;
private $xy;
public __construct($x, $y) { $this->x = $x; $this->y = $y; $this->xy = $x * $y; }
}
$array = array(
10,
new Foo(3, 4),
array(
array(
12,
),
17,
3
)
);
你只是考虑了顶层还是递归下降?如果你递归下降,你还必须扫描物体内部吗?这些对象中的私有整数也在数组中吗?此外,递归下降的算法是否必须检测并避免循环?关于真正需要什么,有相当多的不确定性
所以,要回答这个问题,你必须做出一些假设。我想他们是想让你用'is_int'函数或等效函数检查整数,以确定变量的类型。其次,我假设它们只涉及关联数组的顶层。我想这个练习是为了证明您对“foreach”的熟悉,如何访问全局变量,以及变量仍然有类型的现实,即使PHP允许您忽略它们
“数据不是通过参数传输的,而是作为一个全局变量传输的”听起来可能有点混乱,但这只是意味着您的函数将不接受参数。相反,它计算全局数组中的整数。在本例中,我将调用全局数组“$globalArray”
$globalArray = array("k1" => "foo", "k2" => 5, "k3" => "bar", "k4" => 10);
function num_ints_in_array() {
global $globalArray;
$num_ints = 0;
foreach ($globalArray as $v) {
if (is_int($v)) ++$num_ints;
}
return $num_ints;
}
只是为了好玩而额外编辑:当然有很多方法。这种特殊的功能性解决方案让我很感兴趣
function num_ints_in_array() {
global $globalArray;
return count(array_filter($globalArray, 'is_int'));
}
我猜他们一定告诉过你做1,因为没有像这样现成的东西。请重新表述这个问题——因为它没有意义。请给出一个输入和输出示例。你在哪里查?钥匙?价值观一维?多维?这个问题缺乏细节。这应该是递归的,所以过多的参数是如何传输的,这解释是非常清楚的!确实有很多假设要做。