简体   繁体   English

PHP多维数组-在循环中添加其他记录

[英]PHP Multidimensional Arrays - Adding additional records in a loop

I am trying to populate a multidimensional array while looping through a regular array, but I am finding my code is overwriting each record as opposed to adding a new key. 我试图在循环访问常规数组时填充多维数组,但是我发现我的代码正在覆盖每个记录,而不是添加新键。 here is a condensed version of what i am working on - $AdjustePerWeekSorted is the regular array 这是我正在使用的压缩版本-$ AdjustePerWeekSorted是常规数组

$CSVKey = 0;
foreach ($AdjustedPerWeekSorted as $item) {
$data = array (
            $CSVKey => 
                array (
                'Overall Rank' => (array_search($item,$AllAdjustedPerWeekSorted) + 1),
                'Name' => $AdjustedNames[array_search($item,$AdjustedPerWeek)],
                'Adjusted Positional Score' => $item,
                'Position' => $AdjustedPOS[array_search($item,$AdjustedPerWeek)]
                ),      
            );
        $CSVKey = $CSVKey + 1;              
}   

my thought process is this: for $AdjustedPerWeekSorted[0] -> populate $data[$CSVKey] = MultiDarray add 1 to $CSVKey loop to next record 我的想法是这样的:对于$ AdjustedPerWeekSorted [0]->填充$ data [$ CSVKey] = MultiDarray将$ CSVKey循环中的1加到下一条记录

for $AdjustedPerWeekSorted[1] -> populate $data[$CSVKey + 1] = MultiDarray and so on... 为$ AdjustedPerWeekSorted [1]->填充$ data [$ CSVKey +1] = MultiDarray,依此类推...

all of my post processing of this is working fine, however I am only populating the $data array with the LAST record's data in the $AdjustedPerWeekSorted array. 我所有的后期处理工作都很好,但是我只用$ AdjustedPerWeekSorted数组中的LAST记录数据填充了$ data数组。 Anybody willing to point me in the correct direction? 有人愿意指出我正确的方向吗? any help would be greatly appreciated. 任何帮助将不胜感激。

Thanks! 谢谢!

This will build an array using $CSVKey as the index instead of overwriting: 这将使用$CSVKey作为索引而不是覆盖来构建一个数组:

$data[$CSVKey] = array (
                'Overall Rank' => (array_search($item,$AllAdjustedPerWeekSorted) + 1),
                'Name' => $AdjustedNames[array_search($item,$AdjustedPerWeek)],
                'Adjusted Positional Score' => $item,
                'Position' => $AdjustedPOS[array_search($item,$AdjustedPerWeek)]
                );

You coud simple do it this way: 您可以通过以下方式简单地做到这一点:

<?php


$data = array();    
foreach ($AdjustedPerWeekSorted as $item) {
    $data[]
        = array(
        'Overall Rank'              => (array_search(
                $item,
                $AllAdjustedPerWeekSorted
            ) + 1),
        'Name'                      => $AdjustedNames[array_search(
            $item,
            $AdjustedPerWeek
        )],
        'Adjusted Positional Score' => $item,
        'Position'                  => $AdjustedPOS[array_search(
            $item,
            $AdjustedPerWeek
        )]

    );

}   

If you create Integer keys array and starts from 0 there's no need to use $CSVKey 如果创建Integer keys数组并从0开始,则无需使用$CSVKey

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM