【问题标题】:How to create a numeric array of elements in associative array by type如何按类型在关联数组中创建元素的数值数组
【发布时间】:2012-11-22 10:04:05
【问题描述】:

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

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

【问题讨论】:

  • 预期输出是什么?描述这是如何不起作用的。这是您测试的实际代码吗,因为$[3] = 0; 没有意义。

标签: php arrays string int double


【解决方案1】:

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

您不应该将这些值与字符串' ' 连接起来,除非您希望在值后面加上空格。最后,如果您想要返回数组中第三个位置的元素数量,请不要将计数器与 ' ' 连接 - 使用这种连接,计数器将是 '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 
)

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 2017-10-12
    • 2019-09-30
    • 2023-03-26
    • 2020-04-04
    • 2016-07-05
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多