0

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

$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

for $AdjustedPerWeekSorted[1] -> populate $data[$CSVKey + 1] = MultiDarray and so on...

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. Anybody willing to point me in the correct direction? any help would be greatly appreciated.

Thanks!

1
  • 1
    Why not simplify this with $CSVKey++; and $data[$CSVKey] =? Commented Sep 8, 2014 at 18:43

2 Answers 2

1

This will build an array using $CSVKey as the index instead of overwriting:

$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)]
                );
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for your help. I feel like a bit of a dummy looking at how you did this - definitely should have been able to do this on my own but it works perfectly
0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.