循环读取和输出数据

时间:2019-05-07 00:05:00

标签: php

我制作一个事件列表,最多包含4个事件,并保存在自己的jason文件中。

我为输出编写了这段代码。

JSON:

  

{“ field1”:“纽约”,“ field2”:“ 1553404200”,“ field3”:1554415200}

代码:

$jsonA = file_get_contents('code/data1.json');
$fieldsA = json_decode($jsonA, true);
$cityA = $fieldsA["field1"]; 
$dateStartA = $fieldsA["field2"];
$dateEndA = $fieldsA["field3"];

$jsonB = file_get_contents('code/data2.json');
$fieldsB = json_decode($jsonB, true);
$cityB = $fieldsB["field1"]; 
$dateStartB = $fieldsB["field2"];
$dateEndB = $fieldsB["field3"];

<div><?php echo $cityA . $dateStartA . " - " . $dateEndA?></div>
<div><?php echo $cityB . $dateStartB . " - " . $dateEndB?></div>

问题是:

我有4个事件,每个开始和结束日期。所以我必须做8次相同的操作,但我不希望并且应该将此代码复制8次并使用较高的变量名... 在我的项目中,我有13个字段以及2个数组以我的语言输出日期和月份名称。这就是为什么不复制所有内容8次如此重要。 我需要一个循环,但我不知道具体如何。我是一个绝对的初学者,所以请尽可能简单。

1 个答案:

答案 0 :(得分:0)

出色的尝试!

  • 您可能只想编写一个foreach并读取文件并将其存储在数组中。

  • 在本地服务器中,您可能只想找到code文件夹的绝对路径。如果打开终端,并在终端中打开 CTRL + C 代码目录和 CTRL + V ,则可能看看您的绝对路径是什么样子。然后,粘贴到$server_path中的代码目录之前。然后,运行代码,希望它能工作。


function searchFilenames($array, $re)
{
    return preg_grep('/' . preg_quote($re, '/') . '/i', $array);
}

$server_path = '/path/to/your/localserver/';
$dir = $server_path . 'code';
$filename_array = searchFilenames(glob($dir . "/*"), 'data');

$fields = array();
foreach ($filename_array as $key => $filename) {
    $jsonA = file_get_contents($filename);
    $values = json_decode($jsonA, true);
    $fields[$key]["city"] = $values["field1"];
    $fields[$key]["dateStart"] = $values["field2"];
    $fields[$key]["dateEnd"] = $values["field3"];
}
var_dump($fields);

输出

array(8) {
  [0]=>
  array(3) {
    ["city"]=>
    string(8) "new york"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [1]=>
  array(3) {
    ["city"]=>
    string(6) "boston"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [2]=>
  array(3) {
    ["city"]=>
    string(7) "chicago"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [3]=>
  array(3) {
    ["city"]=>
    string(13) "washington dc"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [4]=>
  array(3) {
    ["city"]=>
    string(5) "miami"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [5]=>
  array(3) {
    ["city"]=>
    string(10) "los angles"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [6]=>
  array(3) {
    ["city"]=>
    string(7) "seattle"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
  [7]=>
  array(3) {
    ["city"]=>
    string(6) "austin"
    ["dateStart"]=>
    string(10) "1553404200"
    ["dateEnd"]=>
    int(1554415200)
  }
}