-1

PHOで次のようなことをすることは可能ですか?

次のような配列をDBから返します

1、2、3今私はそれに4番目の番号を追加してからそれらを再利用したいので

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

または、テーブルが回転するようにテーブルを再配置するための離れた場所があります。私がやろうとしているのは、データベース内の行を順番にローテーションして返すことですが、返されたら自分のページに移動し、ユーザーにデータベースに別の行を入力してもらい、返された行を配置したいと思います最後に、それが最高の値を持つようにします。

基本的に、すべてのエントリから1を減算し、最初のエントリを最大数に増やすことで、列を更新しています。

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

うーん、私が言っていることが正確に私が探しているものだとは思わないか、誰かが私が言おうとしていることを理解しているので、私はそれを変更しません。

または、1から始まる自動インクリメントキーを使用して、他の列のすべてのデータを再配置することができれば、機能します。

これを行います1.行の数を数えます2.すべてのデータベーステーブルエントリを含む配列を返します2.最後の行のデータベースに新しいエントリを追加します。3. 1のエントリを行数+1に移動します(新しい行を作成します。4。他のすべてのエントリを1つ上に移動します。

だからここにあります

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

別の行を追加した後

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

別の行を追加した後

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

別の行を追加した後

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

別の行を追加した後

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

誰が私のための解決策を思い付くことができますか?????

4

2 に答える 2

0

試す

$arr = array('a','b','c');
$value = 'd';
$arr = my_sort($arr, $value);
print_r($arr);
echo nl2br(PHP_EOL);
$arr = my_sort($arr, 'e');
print_r($arr);

function my_sort($arr, $value) {
  $arr[] = $value;
  $first = array_shift($arr);
  $arr[] = $first;

  return $arr;
}

http://codepad.viper-7.com/yJE8FRを確認してください

于 2012-10-29T08:08:41.253 に答える
0

以下の関数を使用して、シフトパラメータを渡すことができます。関数名は以下のrotate_array()です。関数を使用した後、次の値を追加します。

<?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>";


?>

出力:

Array
(
    [0] => Tue
    [1] => Wed
    [2] => Thu
    [3] => Fri
    [4] => Sat
    [5] => Sun
    [6] => Mon
    [7] => next value
)
于 2012-10-29T08:10:14.390 に答える