0

Do not understand why in my final result Shifts-5 is repeating again and again whereas in my array he is here just one time...

Thanks for help.

http://codepad.org/XoBmnHFr

<?php

$firstArray = array("Leaves-19", "Shifts-5", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Leaves-19", "Leaves-19", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Leaves-19", "Leaves-19", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Leaves-19", "Leaves-19", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Leaves-19", "Leaves-19", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Leaves-19", "Leaves-19", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Shifts-1", "Leaves-19");

$secondArray = array("2013-04-28", "2013-04-29", "2013-04-30", "2013-05-01", "2013-05-02", "2013-05-03", "2013-05-04");

$thirdArray = array("13", "10", "12", "9", "14", "11");


$datesCount        = count( $secondArray );
$firstArrayLength  = count( $firstArray );
$thirdArrayLength  = count( $thirdArray );

for( $i=0 ; $i < $thirdArrayLength ; $i++ )
{
    $currentThirdArrayValue = $thirdArray[$i];

    for( $inner=0, $firstArrayIndex=0 ; $inner < $datesCount ; $inner++, $firstArrayIndex++ )
    {
        if( $firstArrayIndex == $firstArrayLength )
                $firstArrayIndex = 0;

        echo "{$secondArray[$inner]} / {$currentThirdArrayValue} / {$firstArray[$firstArrayIndex]}<br/>\n";
    }
}

?>
10
  • What exactly are you trying to do with your code? I want to know, so I understand your problem/issue. Commented May 5, 2013 at 14:17
  • 1
    Because you're iterating $firstarray again and again when doing $firstArrayIndex = 0; .. Commented May 5, 2013 at 14:18
  • can you give idea of expected output .... Commented May 5, 2013 at 14:18
  • Ok. First array if for the day the user need to make (for example Shifts-41 is from 9am to 5pm). Second array is to know wich date are in the current view/table. The third one is for user. I know that in one week there's 7 days. My first array got 42 datas. 42/7=6. I have 6 users. I want for each date, for each user, each type of day he needs to make. With it solution Elvena was so close but there a trouble with day type if there are not the same for users. Commented May 5, 2013 at 14:18
  • For expecting result see my comment pls: codepad.org/XoBmnHFr#comment-LidycMfX Thanks. Commented May 5, 2013 at 14:20

2 Answers 2

2

It can be done without all the counters, like this:

$secondArray = array("2013-04-28", "2013-04-29", "2013-04-30", "2013-05-01", "2013-05-02", "2013-05-03", "2013-05-04");

$thirdArray = array("13", "10", "12", "9", "14", "11");

$secondArrayLength = count($secondArray);

foreach($thirdArray as $third_i => $third_value)
{
    foreach($secondArray as $sec_i => $sec_value)
    {
        $first_value = $firstArray[($third_i * $secondArrayLength) + $sec_i];
        echo "$sec_value / $third_value / $first_value<br/>" ;
    }
}
Sign up to request clarification or add additional context in comments.

Comments

0

It's because you keep resetting the pointer inside the first array at every iteration of the third array:

$firstArrayIndex=0;

Move this assignment outside of the outer for loop.

Demo

1 Comment

@kdazzle well, there are no pointers in php, so use your imagination I'd say :)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.