在php中为多维数组分配和回显值

时间:2017-10-25 17:16:58

标签: php arrays multidimensional-array

我有一个多维数组,如果我手动设置值,它可以工作,但如果我尝试动态设置值,则不起作用。

以下是手动设置数组值时的代码:

<?php

//testing creation and output of a multidimensional array
$evt = array("BATT","MGAP","BSTR");
$st = array("Document","Enrollee","Agent","Other");
$ord = array(1,3,2,4);
$prt = array(
  array('evt'=>"BATT",'st'=>"Document",'ord'=>1),
  array('evt'=>"BATT",'st'=>"Enrollee",'ord'=>3),
  array('evt'=>"BATT",'st'=>"Agent",'ord'=>2),
  array('evt'=>"BATT",'st'=>"Other",'ord'=>4),
  array('evt'=>"MGAP",'st'=>"Document",'ord'=>1),
  array('evt'=>"MGAP",'st'=>"Enrollee",'ord'=>3),
  array('evt'=>"MGAP",'st'=>"Agent",'ord'=>2),
  array('evt'=>"MGAP",'st'=>"Other",'ord'=>4),
);

$keys = array_keys($prt);
for ($x=0;$x<count($keys);$x++) {
    echo "UNSORTED: prt key is " . $keys[$x] . "{<br>";
    foreach ($prt[$keys[$x]] as $key=> $value) {
        echo $key . " : " . $value . "<br>";
    }

    echo "}<br>";
}
?>

以下是尝试动态设置值时无效的代码:

<?php

//testing creation and output of a multidimensional array
$evt = array("BATT","MGAP","BSTR");
$st = array("Document","Enrollee","Agent","Other");
$ord = array(1,3,2,4);    
$prt = array();

for ($x=0;$x<count($evt);$x++) {
    for ($y=0;$y<count($st);$y++) {
        $prt[$x][$y] = array('evt'=>$evt[$x],'st'=>$st[$y],'ord'=>$ord[$y]);
        echo "evt[".$x."] is set to " . $evt[$x] . " and st[".$y."] is set to " . $st[$y] . " and ord[".$y."] is set to " . $ord[$y] . "<br>";
    }
}

$keys = array_keys($prt);
for ($x=0;$x<count($keys);$x++) {
    echo "UNSORTED: prt key is " . $keys[$x] . "{<br>";
    foreach ($prt[$keys[$x]] as $key=> $value) {
        echo $key . " : " . $value . "<br>";
    }

    echo "}<br>";
}
?>

基于for $ y循环中的echo语句,我得到了正确的值,但由于某种原因,我要么没有正确存储它,要么使用$ key =&gt; $ value isn&#39;工作,我无法弄清楚哪个。我已经寻找各种解决方案来尝试动态设置数组,然后再动态地再次访问它,似乎无法按预期工作。我希望你们都能提供帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

更改此行

import pandas as pd
import requests
from io import StringIO,BytesIO
import gzip

r = requests.get('https://tickdata.fxcorporate.com/EURUSD/2015/1.csv.gz')

gzip_file = gzip.GzipFile(fileobj=BytesIO(r.content))

pd.read_csv(StringIO(gzip_file.read().decode('utf-8').replace('\x00','')))

到此:

$prt[$x][$y] = array('evt'=>$evt[$x],'st'=>$st[$y],'ord'=>$ord[$y]);

$prt[] = array('evt'=>$evt[$x],'st'=>$st[$y],'ord'=>$ord[$y]); 应该是&#34; flat&#34;数组数组。在原始代码行中,您实际创建的是一个多维数组,它不会按预期工作。