我有一组数据,这是国际电话号码前缀的通话费用明细。我需要解析数据,以便知道调用任何数字的每分钟成本。格式是前缀后跟的成本。这是一个大混乱。数据如下所示:cost,prefix,prefix,prefix,cost,prefix,prefix,prefix,prefix
。
前缀的数量各不相同,但成本始终为0.something(例如。0.345
)
示例:
0.43,123,124,125,0.64,567,568,569
我需要重新格式化数据,以便以编程方式获取调用任何前缀的成本,因此我知道调用前缀123的成本为0.43美元,调用567成本为0.64美元等。例如,也许我可以查找所需的前缀并找到它之前的成本。
有人可以帮忙吗?感谢
答案 0 :(得分:1)
您可以在字符串上使用explode()
重新格式化数据,并对其进行迭代以查找成本,如下所示:
$string = '0.43,123,124,125,0.64,567,568,569';
$costs = array(); $current_price = null;
foreach( explode( ',', $string) as $value) {
if( $value < 1) {
$current_price = $value;
} else {
$costs[ $value ] = $current_price;
}
}
现在,您有一个查找表,其中键是前缀,您可以通过访问前缀的索引来查找成本,如下所示:
echo "It costs " . $costs[ 125 ] . " to call prefix 125";
实际上,您的$costs
数组看起来像这样:
Array
(
[123] => 0.43
[124] => 0.43
[125] => 0.43
[567] => 0.64
[568] => 0.64
[569] => 0.64
)
答案 1 :(得分:0)
以下是您可以使用的示例代码:
<?php
$string = "0.43,123,124,125,0.64,567,568,569";
$arr = explode (',',$string);
$callrates =[];
$rate;
foreach($arr as $key=>$value){
if(strstr($value,'.')){
$rate = $value;
}else{
$callrates[$value] = $rate;
}
}
测试print_r($callrates);
生成
Array
(
[123] => 0.43
[124] => 0.43
[125] => 0.43
[567] => 0.64
[568] => 0.64
[569] => 0.64
)
但后来接受的答案已经做了相同的