剪切数组PHP中的所有字符串

时间:2015-03-13 00:30:49

标签: php arrays string

我想剪切数组中的所有字符串。我一直在尝试使用array_walk但是不能完全理解它。是否有一个简单的PHP函数来执行此操作?

此数组

{ 
[0]=> string(22) ""price":"292.67000000"" 
[1]=> string(22) ""price":"292.67000000"" 
[2]=> string(22) ""price":"292.75000000"" 
[3]=> string(22) ""price":"292.76000000""
}

变为

{ 
[0]=> 292.67000000 
[1]=> 292.67000000 
[2]=> 292.75000000 
[3]=> 292.76000000
}

目前的代码:

<?php
$filename = file_get_contents('idfilebuy2015-03-12.txt');
$array = explode(",", $filename);
sort($array);

array_walk(chop($array);
array_walk(substr($array, 31);

var_dump($array);

?>

很抱歉反应迟钝。发生的事情是我有一个文本数据文件,我正在读取PHP中的数组。 文本文件中的每一行都将进入数组中的不同值。 我想剪切数组中的值,以便我只有一个数字来进行计算。现在我有整个字符串。

2 个答案:

答案 0 :(得分:1)

这应该适合你:

(这里我只用array_map()遍历每个数组元素。然后我用preg_match_all()来抓取每个数组元素的浮点数。

<?php

    $arr = [
        '"price":"292.67000000"', 
        '"price":"292.67000000"',
        '"price":"292.75000000"',
        '"price":"292.76000000"',
    ];

    $arr = array_map(function($v){
        preg_match_all("/(\d+\.\d+)/", $v, $m);
        return $m[0][0];
    }, $arr);

    print_r($arr);

?>

输出:

Array ( [0] => 292.67000000 [1] => 292.67000000 [2] => 292.75000000 [3] => 292.76000000 )

答案 1 :(得分:0)

可能有很多其他方法可以做到这一点。使这个棘手的是在字符串中嵌入字符串字符(“),这使得许多函数和内置的转换技术都无法工作。

这是一种不需要使用正则表达式的方法:

<?php
$prices = array('"price":"292.67000000"', '"price":"292.67000000"');

function f(&$item, $key) {
    $t = explode(':', $item);
    $item = trim($t[1], '"');
}

array_walk($prices, 'f');
print_r($prices);

返回:

Array
(
    [0] => 292.67000000
    [1] => 292.67000000
)