如何读取PHP数组?
我正在做一个快速的PHP项目,它从另一个文件中获取信息并读取它并收集信息。这些网站存储的信息如下: 文件名:如何读取PHP数组?,php,arrays,Php,Arrays,我正在做一个快速的PHP项目,它从另一个文件中获取信息并读取它并收集信息。这些网站存储的信息如下: 文件名:.ipn Array ( [mc_gross] => 10.00 [ipn_track_id] => 731ea17d ) Array ( [mc_gross] => 10.00 [ipn_track_id] => 523fd7886 ) Array ( [mc_gross] => 10.00 [ipn_tra
.ipn
Array
(
[mc_gross] => 10.00
[ipn_track_id] => 731ea17d
)
Array
(
[mc_gross] => 10.00
[ipn_track_id] => 523fd7886
)
Array
(
[mc_gross] => 10.00
[ipn_track_id] => 523fd7886
)
我如何创建一个PHP脚本来获取.ipn文件并汇总整个
[mc_gross]
,在本例中为30.00
?首先,使用将数组保存到文件中
然后,使用和读取文件
希望这有帮助 这应该行得通-
<?php
$input = file_get_contents("filename.ext");
$regexp = "/\[mc_gross\][ ]*=>[ ]*([0-9]+(?:\.[0-9]+)?)/";
$sum = 0;
if(preg_match_all($regexp, $input, $matches, PREG_SET_ORDER)){
foreach($matches as $match) {
$sum += $match[1];
}
unset($match);
}
echo "Sum ".$sum;
/*
var_dumping the matches -
array
0 =>
array
0 => string '[mc_gross] => 10.00' (length=19)
1 => string '10.00' (length=5)
1 =>
array
0 => string '[mc_gross] => 10.00' (length=19)
1 => string '10.00' (length=5)
2 =>
array
0 => string '[mc_gross] => 10.00' (length=19)
1 => string '10.00' (length=5)
*/
?>
去做:
$lines = array_chunk(file('items.ipn'),5);
$sum = 0;
foreach($lines as $line){
$sum += floatval(end(explode('=>',$line[2])));
}
print $sum;
// 30
这就是.ipn文件的确切内容吗?您应该将数组保存为JSON<代码>json_编码($array)和
json\u解码($file)代码>。是什么生成了.ipn
?这是一种非常非传统的格式,而且不太便于标记。您可以解析它,但最好使用XML、JSON或YMLYou,您可以使用正则表达式进行解析-只需匹配文本[mc_gross]=>
,后跟任意数量的[0-9.]
。试试看,让我知道你进展如何!如果OP对如何生成他想要读取的文件没有影响怎么办?如果我想打印出一个名为[mc_name]everytime.mc_name而不是mc_gross的字符串数组,我会在regexp中键入什么??只需将mc_-gross替换为mc_-name,如下“/[mc_-name][]*=>[]*([0-9]+(?:\.[0-9]+)/”。此外,如果[mc_-gross]和[mc_-name]出现在不同的数组中,并且希望找到这两个条目的总和,则可以使用“/[(?:(?:(?:mc_-gross);(?:mc-u-name))[]=>[]*([0-9]+)/“问题是您的代码似乎只包含数字,不是字符串。哦,好吧,你没有指定。我认为格式是具体的。用于名称-/[mc_name][]*=>[]*([a-zA-Z]+)/
<?php
$input = file_get_contents("filename.ext");
$regexp = "/\[mc_gross\][ ]*=>[ ]*([0-9]+(?:\.[0-9]+)?)/";
$sum = 0;
if(preg_match_all($regexp, $input, $matches, PREG_SET_ORDER)){
foreach($matches as $match) {
$sum += $match[1];
}
unset($match);
}
echo "Sum ".$sum;
/*
var_dumping the matches -
array
0 =>
array
0 => string '[mc_gross] => 10.00' (length=19)
1 => string '10.00' (length=5)
1 =>
array
0 => string '[mc_gross] => 10.00' (length=19)
1 => string '10.00' (length=5)
2 =>
array
0 => string '[mc_gross] => 10.00' (length=19)
1 => string '10.00' (length=5)
*/
?>
$lines = array_chunk(file('items.ipn'),5);
$sum = 0;
foreach($lines as $line){
$sum += floatval(end(explode('=>',$line[2])));
}
print $sum;
// 30