我想剪切数组中的所有字符串。我一直在尝试使用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中的数组。 文本文件中的每一行都将进入数组中的不同值。 我想剪切数组中的值,以便我只有一个数字来进行计算。现在我有整个字符串。
答案 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
)