0

我如何从关联数组中的元素创建一个新数组,如果值是整数,则将该值放在新数组的第一位,第二位放双精度,第三位字符串,最后一个位置元素的数量。我尝试这样的事情,但它不起作用。

<?php
$array = array ('first' => 2.54, 'second' => "foo", 'third' => 1);
function myFunction($array)
{   $NewArray = array ();
    $[3] = 0;
foreach($array as $value)
{
    if(is_integer($value))
    {echo $NewArray[0] = $value.' ';}
    if(is_double($value))
    {echo $NewArray[1] = $value.' ';}
    if(is_string($value))
    {echo $NewArray[2] = $value.' ';}
    echo $NewArray[3] += 1 . ' ';}
    return $NewArray;}
MyFunction ($array);
?>
4

1 回答 1

0

Mathieu Imbert 是对的,并且您在运行代码时没有描述问题所在。我根据myFunction应该返回的内容进行了更正(如您的问题中所述)。

您不应该将这些值与字符串连接,' '除非您希望它与值后面的空格一起使用。最后,如果您想要返回数组中第 3 位的元素数量,请不要将计数器与' '- 连接起来,计数器将是'1 1 1 '(对于您问题中的示例数组)。没有它 - 3

这是经过更正、经过测试的代码(我冒昧地重新格式化了您的代码以使其更易于阅读并添加print_r()了更漂亮的输出):

<?php
    $array = array('first' => 2.54, 'second' => "foo", 'third' => 1);
    function myFunction($array) {
        $newArray = array();
        $newArray[3] = 0;
        foreach($array as $value) {
            if (is_integer($value)) {
                $newArray[0] = $value;
            }
            if (is_double($value)) {
                $newArray[1] = $value;
            }
            if (is_string($value)) {
                $newArray[2] = $value;
            }
            $newArray[3] += 1;
        }
        return $newArray;
    }
    print_r(myFunction($array));
?>

输出:

Array
(
    [3] => 3
    [1] => 2.54 
    [2] => foo 
    [0] => 1 
)
于 2012-12-04T18:07:13.263 回答