Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Is it possible to do something like the following in PHO

I return an array from my DB that looks like the following

1, 2 ,3 now i want to add a forth number to it and then resort them so

1 becomes 5
2 becomes 1
3 becomes 2
Fourth Number becomes 3

or is there a away to rearrange my table so it rotates. What i am trying to do is rotate and return a row in the database in order but once it has been returned i want to my page i want to get a user to enter another row into my database and then put the row that had been returned to the end so it would have the highest value.

I am basically updating my column by subtracting one from all entries and increaseing my first entry to the highest number

a. 1,2,3
b. 4,1,2,3
c. 3,5,1,2,4
d. 2,4,6,1,3,5

Hmmmm I dont think what i am saying is exacty what i am looking for or maybe someone understands what i am trying to say so i wont change it.

Or if i could use a auto incremented key starting at 1 and just rearrange all the data in the other columns would work.

So do this 1. Count the number of row 2. Return an array with all database table entries 2. Add a new entry to the database on the last row. 3. Move the entry in 1 to the number of rows +1 (creating a new row 4. Move all other entries up one.

so here is is

1 -> a
2 -> b
3 -> c

after adding another row

1 -> b
2 -> c
3 -> d
4 -> a

After adding another row

1 -> c 
2 -> d 
3 -> a 
4 -> e
5 -> b 

After adding another row

1 -> d
2 -> a
3 -> e
4 -> b
5 -> f
5 -> c

After adding another row

1 -> a
2 -> e
3 -> b
4 -> f
5 -> c
5 -> g
5 -> d

WHO can come up with a solution for me?????

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
395 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can use the below function and pass the shifting parameter to it. The function name is rotate_array() below. After using the function add the next value.

<?php

$weekdays = array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");

function rotate_array($steps, $arr)
{
    if($steps >= 0)
    {
        for($i = 0; $i < $steps; $i++)
        {
            $elm = array_shift($arr);
            array_push($arr, $elm);
        }
    }
    else
    {
        for($i = 0; $i > $steps; $i--)
        {
            $elm = array_pop($arr);
            array_unshift($arr, $elm);
        }
    }
    return $arr;
}

$arr = rotate_array(1, $weekdays);

//For multidimensional array, add this part

foreach($arr as $key => $childArray) {

       rotate_array(1,$childArray);


}
//end of addition

$arr[] = "next value";
echo "<pre>";
print_r($arr);
echo "</pre>";


?>

Output:

Array
(
    [0] => Tue
    [1] => Wed
    [2] => Thu
    [3] => Fri
    [4] => Sat
    [5] => Sun
    [6] => Mon
    [7] => next value
)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...