Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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 在一分钟内排列阵列,而不是在下一分钟?为foreach()提供的参数无效_Php - Fatal编程技术网

Php 在一分钟内排列阵列,而不是在下一分钟?为foreach()提供的参数无效

Php 在一分钟内排列阵列,而不是在下一分钟?为foreach()提供的参数无效,php,Php,出于某种原因,我的代码在前一分钟是一个数组,而不是下一分钟。我只是在学习php,我不明白这一点。我用这一页了解了其中的大部分内容: 我的代码也用于以表格形式显示数据的页面。在该页面上,它工作正常……但由于某种原因,我在饼图页面上得到了foreach()提供的无效参数,,它说它不是数组。我不知道如何着手解决这个问题 我使用的url是?action=scores&data=pie,所以它应该列出“get_universions()”中的所有大学(那里有3所) 有人能帮忙吗 开关: // Showin

出于某种原因,我的代码在前一分钟是一个数组,而不是下一分钟。我只是在学习php,我不明白这一点。我用这一页了解了其中的大部分内容:

我的代码也用于以表格形式显示数据的页面。在该页面上,它工作正常……但由于某种原因,我在饼图页面上得到了foreach()提供的无效参数,,它说它不是数组。我不知道如何着手解决这个问题

我使用的url是?action=scores&data=pie,所以它应该列出“get_universions()”中的所有大学(那里有3所)

有人能帮忙吗

开关:

// Showing scores   
case 'scores':
    // Grab the Uni ID and use the appropriate query
    if (isset($_GET['uni_id']))
    {
        $uni_id = $_GET['uni_id'];
        $uni = get_university($uni_id);
    }
    else
    {
        $uni = get_universities();
    }

    // We have to display this data according to the request
    if (isset($_GET['data']))
    {
        $data = $_GET['data'];
    }
    else
    {
        $data = "table";
    }

    // Display the data accordingly
    include (root . '/view/' . $data . '_view.php');

    break;
饼图:

    // Create the data table.
    <?php foreach ($uni as $uni) : ?>
    var data<?php echo $uni['university_id']; ?> = new google.visualization.DataTable();
    data<?php echo $uni['university_id']; ?>.addColumn('string', 'Area');
    data<?php echo $uni['university_id']; ?>.addColumn('number', 'Score');
    data<?php echo $uni['university_id']; ?>.addRows([
      ['Teaching', <?php echo $uni['teaching_score']; ?>],
      ['Intl Outlook', <?php echo $uni['int_outlook_score']; ?>],
      ['Industry Income', <?php echo $uni['ind_income_score']; ?>],
      ['Research', <?php echo $uni['research_score']; ?>],
      ['Citations', <?php echo $uni['citations_score']; ?>]
    ]);
    <?php endforeach ?>

    // Set chart options
    <?php foreach ($uni as $uni) : ?>
    var options<?php echo $uni['university_id']; ?> = {'title':'<?php echo $uni['university_name']; ?> Scores',
                   'width':400,
                   'height':300};
    <?php endforeach ?>

    // Instantiate and draw our chart, passing in some options.
    <?php foreach ($uni as $uni) : ?>
    var chart<?php echo $uni['university_id']; ?> = new google.visualization.PieChart(document.getElementById('chart_div<?php echo $uni['university_id']; ?>'));
    chart.draw(data<?php echo $uni['university_id']; ?>, options<?php echo $uni['university_id']; ?>);
    <?php endforeach ?>
//创建数据表。
var data=new google.visualization.DataTable();
data.addColumn('string','Area');
data.addColumn('number','Score');
data.addRows([
[‘教学’,],
[‘国际展望’,],
[‘行业收入’,],
[‘研究’,],
[‘引文’,]
]);
//设置图表选项
变量选项={'title':'Scores',
“宽度”:400,
‘高度’:300};
//实例化并绘制图表,传入一些选项。
var chart=new google.visualization.PieChart(document.getElementById('chart_div');
图表绘制(数据、选项);
表视图(有效):


问题在于您的
foreach
语句:

foreach ($uni as $uni) :
这里覆盖
$uni
变量。为集合和项目使用不同的名称,例如:

foreach ($uni as $theUni) :
// also change instances of $uni below
编辑

以上是错误的。对
foreach
的第一个参数的解析只发生一次,因此
foreach
不会有问题。但是,
foreach
并不是一个新的作用域,因此如果计划重用数组变量,则需要选择不同的名称作为迭代器,这样它就不会被重写

$a = array(); // $a is array
foreach ($a as $a) {
  // $a is element of original $a
}
// $a is the last element of the original $a array

foreach ($a as $a) // Fail, since $a is not an array anymore

但我在表视图中这样做没有任何问题。
$a = array(); // $a is array
foreach ($a as $a) {
  // $a is element of original $a
}
// $a is the last element of the original $a array

foreach ($a as $a) // Fail, since $a is not an array anymore