1

私はこの配列を持っており、以前と同じように返そうとしました。

例:

        $this->permission_array = array(
                                    'orders'                => 1,
                                    'orders_Status'         => 0,
                                    'schools'               => 0,
                                    'accommodation'         => 0,
                                    'users'                 => 1,
                                    'news'                  => 0,
                                    'blocks'                => 1,
                                    'settings'              => 0,
                                    'videos'                => 1,
                                    );

それを内破してデータベースに挿入すると、このようになりました。

USER_ID     USER_NAME           USER_PERMISSION
---------------------------------------------------
  1302       Othman             1,0,0,0,1,0,1,0,1

そして今、爆発を使用すると配列として返されますが、キーは同じではありません。これらの値を、この配列とは異なる同じ配列に転送する方法:

[0] => 1
[1] => 0
[2] => 0
[3] => 0
[4] => 1
[5] => 0
[6] => 1
[7] => 0
[8] => 1  

最後の配列を最初の配列に再度変更する方法はありますか? 前もって感謝します。

私の目的は、データベース フィールドを変更して新しいテーブルを作成することです。君たちありがとう

4

6 に答える 6

1

関数はimplode値のみを気にします。

implodeandを使用する代わりに、andを使用して json を保存する形式として使用explodeできます。これは重要な情報のままです。json_encodejson_decode

しかし、本当の問題はデータベースの設計です。

于 2012-05-17T07:28:01.020 に答える
1

user_permissions のテーブルを作成します。

permission_id    permission_name

次に、users_2_permissions のテーブルを作成します

user_id          permission_id

アレイを復元する場合は、JOINusers、users_2_permissions、および user_permissions に対して実行します。

于 2012-05-17T07:29:28.727 に答える
0

serialize()データベースに配列を格納するために使用します。

于 2012-05-17T07:26:13.153 に答える
0

単純 ...

    $a=explode(',',$permitions_from_database);
    $names=array('orders','orders_Status','etc','etc')

    $i=0;
    foreach($names as $name)
    {
    $permission_array[$name]=$a[$i];
    $i++;
    }

しかし、データを別の列に配置する必要があると思います。すべてのデータをphpに持ち込んで処理するよりも、データベースにクエリを実行して、何かに対する権限を持っている人を探す方がよいでしょう。

それが役立つことを願っています:)

于 2012-05-17T07:33:48.843 に答える
0

暗示されているわけではありませんが、正規化が必要です。値を二重引用符 "" で囲んだ 1 つの文字列全体として保存すると、データベースに影響を与え、データベースを再構築する必要がなくなります。

于 2012-05-17T07:34:01.573 に答える
0

このために別のテーブルを作成できます。たとえば、USER_PERMISSIONS (id、user_id、orders、orders_Status、...) のように、id は主キー、user_id は USERS テーブルへの外部キーであり、他のすべてのフィールドにはそれぞれの権限の値が含まれています。 . この方法では、クエリが少し複雑になる可能性がありますが、arrat を文字列にシリアル化するよりはましです。

于 2012-05-17T07:27:59.047 に答える