-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_filejson_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 回答