-1

20枚ほどの画像しか入っていない小さなギャラリーを作っています。このデータをどこかに(PHPファイル自体にも)保存したいので、データをリテラルまたはリソースファイルとしてエンコードする方法を検討しています。

JavaScriptでは、(メモリから)次のような表記法を使用します。

var albums = [
  { name='Album 1', photos=['photo1.jpg', 'photo2.jpg'] },
  { name='Album 2', photos=['photo3.jpg', 'photo4.jpg'] }
]

これは本質的にJSONです。

JavaScriptはPHPよりも動的であるため、これは不可能だと思います。おそらくXMLを使用していくつかのクラスにバインドするという単純な代替手段はありますか?

私は完全なPHP初心者なので、あなたの答えに知識があると思い込まないでください。

4

7 に答える 7

1

PHP ファイルに格納したい一定のデータがある場合は、Javascript で行ったのと同じことを使用できます: PHP 配列を宣言するだけです。


このような何かがうまくいくはずです:

$albums = array(
    array(
        'name' => "Album 1", 
        'photos' => array('photo1.jpg', 'photo2.jpg'), 
    ), 
    array(
        'name' => "Album 2", 
        'photos' => array('photo3.jpg', 'photo4.jpg'), 
    ), 
);

そして、$albums配列を操作するだけです。


もちろん、更新するのは簡単ではありません。有効な PHP コードを作成する必要があります。


別の解決策は、データを外部ファイル(XML または JSON など) にsimplexml_load_file保存し、またはのようなものを使用json_decodeして読み取ることです。

しかし、それはもう少し作業が必要になることを意味します。

于 2010-02-11T12:28:16.473 に答える
1

別のjsonファイルにデータを保存し、 PHP のjson_decode()関数を使用して PHP オブジェクトに解析します。

このアプローチを使用すると、AJAX を介して JavaScript のデータに簡単にアクセスすることもできます (その方向に進むことにした場合)。

この方法は、データを PHP ファイルに保存するよりも簡単に操作できます。また、必要に応じてプログラムでデータを簡単に更新できることも意味します。

于 2010-02-11T12:28:28.177 に答える
1

PHP では、おそらくこれを配列として定義します。

$albums = array(
    0 => array('name' => 'Album 1', 'photos' => array('photo1.jpg', 'photo2.jpg')),
    1 => array('name' => 'Album 2', 'photos' => array('photo3.jpg', 'photo4.jpg'))
);
于 2010-02-11T12:30:51.193 に答える
1

PHP でもまったく同じことができます。

$albums = array(
    array(
        'name'   => 'Album 1',
        'photos' => array(
            'photo1.jpg',
            'photo2.jpg',
        )
    ),
    array(
        'name'   => 'Album 2',
        'photos' => array(
            'photo3.jpg',
            'photo4.jpg',
        )
    )
);

しかし、これは悪いスタイルです。クラスを作成したいかもしれません:

class Album {

    protected $name;

    protected $files;

    public function __construct($name) {
        $this->name = $name;
    }

    public function addFile($file) {
        $this->files[] = $file;
    }

    public function getFiles() {
        return $this->files;
    }

}

$album1 = new Album('Album1');
$album1->addFile('photo1.jpg');
$album1->addFile('photo2.jpg');

$album2 = new Album('Album2');
$album2->addFile('photo3.jpg');
$album2->addFile('photo4.jpg');

$albums = array($album1, $album2);
于 2010-02-11T12:30:53.327 に答える
0

var_exportjson_encodeが可能です。

file_put_contents($path_to_file, json_encode($albums));
于 2010-02-11T12:29:07.357 に答える
0

可能性はいくらでもある

于 2010-02-11T12:35:10.373 に答える
0

シリアル化を忘れないでください

serialize — 値の格納可能な表現を生成します

serialize は、JSON と XML では機能しない PHP オブジェクトでも機能します。

于 2010-02-11T12:35:43.353 に答える