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中的“”函数,用于检查关联数组中有多少个整数,数据不是通过参数传输的,而是作为全局变量“”传输的。谢谢

尝试以下操作:

<?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,因为没有像这样现成的东西。请重新表述这个问题——因为它没有意义。请给出一个输入和输出示例。你在哪里查?钥匙?价值观一维?多维?这个问题缺乏细节。这应该是递归的,所以过多的参数是如何传输的,这解释是非常清楚的!确实有很多假设要做。