如何按类型在关联数组中创建元素的数字数组

时间:2012-12-04 17:36:51

标签: php arrays string int double

如何从关联数组中的元素创建一个新数组,如果值为整数,则将该值放在新数组的第一位,第二位放置double,放在第三位字符串,然后打开最后一个元素的数量。我尝试这样的东西,但它不起作用。

<?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);
?>

1 个答案:

答案 0 :(得分: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 
)