将数组元素转换为字符串而不遍历数组

时间:2014-06-02 20:13:46

标签: php arrays

考虑以下数组 -

$array = array("index1"=>"8787",
    "index2"=>909,
    "index3"=>"234234",
    "index4"=>"00-00-0000",
    "index5"=>"false",
    "index6"=>"5432",
    "index7"=>2834,
    "index8"=>42847628
    );

有没有办法将数组的非字符串元素转换为字符串类型而不实际遍历数组。

数组可能非常大,因为它是动态创建的,会影响响应时间。

我可以使用以下

foreach ($array as $key => $value) {
    $array[$key] = (gettype($value)=="string")?$value:(string)$value;
}

但是,还有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

你只能通过遍历来做到这一点。所以,以这种方式使用array_map

$array = array("index1"=>"8787",
    "index2"=>909,
    "index3"=>"234234",
    "index4"=>"00-00-0000",
    "index5"=>"false",
    "index6"=>"5432",
    "index7"=>2834,
    "index8"=>42847628
    );

$result = array_map('strval',$array );

var_dump($result);

答案 1 :(得分:0)

有很多解决方案。您也可以在foreach循环中执行此操作:

foreach ($array as $key => &$_value) {
    $_value = strval($_value);
}

&在这里很重要。 (_只是我用来阻止我混合引用变量和非引用变量的约定。)