ما هي أسهل طريقة لتحميل مجموعة من البيانات الحرفية في PHP؟

StackOverflow https://stackoverflow.com/questions/2244336

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أقوم ببناء معرض صغير سيكون لديه فقط 20 صورة أو نحو ذلك في ذلك. أود الحصول على هذه البيانات المخزنة في مكان ما (حتى في ملف PHP نفسه) ولذا أبحث عن طرق ترميز البيانات كملف حرفي أو موارد.

في جافا سكريبت، أود استخدام تدوين تشبه (من الذاكرة):

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

هذا هو JSON، في جوهرها.

أفترض أن JavaScript أكثر ديناميكية من PHP، وبالتالي فهذا غير ممكن. هل هناك بديل بسيط، ربما تستخدم XML وملزمة لبعض الفصول؟

أنا مبتدئ PHP الكامل، لذا يرجى عدم تحمل أي معرفة في إجابتك.

هل كانت مفيدة؟

المحلول

إذا كان لديك بعض البيانات المستمرة التي تريد تخزينها في ملف 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 لقراءة ذلك.

ولكن هذا يعني المزيد من العمل أكثر قليلا - لذلك ربما ليس ذلك ضروريا في قضيتك؟

نصائح أخرى

حفظ البيانات في منفصلة json. ملف واستخدام PHP json_decode () وظيفة لتحليلها في كائنات PHP.

باستخدام هذا النهج، لديك أيضا سهولة الوصول إلى البيانات في جافا سكريبت عبر Ajax، إذا قررت التحرك في هذا الاتجاه.

هذه الطريقة أسهل في العمل مع تخزين البيانات في ملف PHP الخاص بك، وهذا يعني أيضا أنه يمكنك تحديث البيانات بشكل رائع برمجيا إذا كانت الحاجة إلى أي وقت مضى.

في 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'))
);

يمكنك القيام بالضبط نفسه في 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);

لا تنسى تسلسل

تسلسل - يولد تمثيلا مخزلا للقيمة

Serialize Works على كائنات PHP أيضا التي لا يقوم بها JSON و XML

var_export. و json_encode. هي الاحتمالات.

file_put_contents($path_to_file, json_encode($albums));

هناك عدد من الاحتمالات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top