Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取PHP数组?_Php_Arrays - Fatal编程技术网

如何读取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

我正在做一个快速的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_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