x

Bab utama

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Panduan permulaan pantas - LimeSurvey 3.0+
  3. Pemasangan - LimeSurvey CE
  4. Cara mereka bentuk tinjauan yang baik (panduan)
  5. Bermula
  6. Mentadbir LimeSurvey
  7. Tinjauan - pengenalan
  8. Tetapan tinjauan
  9. Menu tinjauan
  10. Struktur tinjauan
  11. Soalan - pengenalan
  12. Kumpulan soalan - pengenalan
  13. Tinjauan - pengurusan
  14. Pilihan bar alat tinjauan
  15. Tinjauan berbilang bahasa
  16. Enjin ExpressionScript - Panduan mula pantas
  17. Ciri tidak dikategorikan dan ciri lanjutan
  18. Soalan Lazim Umum
  19. Penyelesaian Masalah
  20. Penyelesaian sementara
  21. Lesen
  22. Tukar log versi
  23. Pemalam
 Actions

Contoh ExpressionScript

From LimeSurvey Manual

Halaman ini mungkin telah diterjemahkan oleh mesin dan mungkin mengandungi ralat. Papar teks asal bahasa Inggeris · Perbaiki terjemahan ini
This page is a translated version of the page ExpressionScript examples and the translation is 100% complete.
Sila bantu kembangkan artikel ini dengan menambah contoh anda sendiri. Ini akan membantu orang lain yang baru bermula menggunakan Skrip ungkapan.


Struktur

Bahagian pertama artikel ini menerangkan kegunaan Ungkapan dan tempat untuk mencari/menambah Ungkapan. Bahagian kedua menyediakan contoh cara menggunakan Ungkapan.


Kategori Ungkapan

LimeSurvey menggunakan Ungkapan untuk tujuan berikut:


Kaitan

Tujuan: Menyembunyikan kumpulan soalan/soalan

Kaitan mengawal sama ada sesuatu kumpulan soalan atau soalan dipaparkan atau disembunyikan. Jika hasil Ungkapan ialah "true" (iaitu 1), elemen tersebut akan dipaparkan. Jika tidak (jika hasil Ungkapan ialah "false" (iaitu 0)), elemen tersebut akan disembunyikan.

Jenis Papar/sembunyi Tempat untuk mencari Tangkapan skrin
Kaitan kumpulan soalan kumpulan soalan Cipta/Edit kumpulan soalan -> "Persamaan kaitan:"
Kaitan soalan soalan Cipta/Edit soalan -> "Persamaan kaitan:"
Kaitan subsoalan subsoalan Edit subsoalan -> "Persamaan kaitan:"


Validasi

Tujuan: Mengesahkan input/tindakan pada soalan/subsoalan/jawapan

Validasi mengawal sama ada input responden ke dalam sesuatu soalan atau tindakan adalah sah atau tidak. Jika hasil ungkapan ialah "true" (iaitu 1), kelas "good" akan dikenakan pada elemen dan mesej pengesahan. Jika tidak, iaitu jika hasil ungkapan ialah "false" (iaitu 0)), kelas "error" akan dikenakan pada elemen dan mesej pengesahan. Anda boleh mengisytiharkan gaya untuk kelas-kelas ini dalam template.css.

Jenis Mengesahkan Tempat untuk mencari Tangkapan skrin
Validasi soalan soalan Cipta/Edit soalan -> "Tab Logik" -> "Persamaan pengesahan soalan"
Validasi subsoalan subsoalan Cipta/Edit soalan -> "Tab Logik" -> "Persamaan pengesahan subsoalan" ‎

Output teks

Tujuan: (Melakukan sesuatu) dan menulis sebahagian teks

Ungkapan boleh digunakan untuk menulis sebahagian teks. Sebagai contoh, anda boleh menguji atau mengira sesuatu dan menentukan output bergantung pada hasil ujian atau pengiraan tersebut. Ia juga boleh digunakan untuk memasukkan teks soalan, jawapan, jenis soalan, ... bagi soalan yang digunakan sebelum Ungkapan digunakan. Output teks boleh digunakan di mana-mana sahaja teks dipaparkan dan boleh memulangkan pelbagai jenis hasil.

Kes penggunaan Keterangan
Penyesuaian mikro Melaraskan teks, cth., menulis "Encik" atau "Puan" bergantung pada soalan jantina yang ditanya sebelumnya
Pengiraan Mengira nilai dan menulisnya, cth., "Pendapatan keluarga anda ialah xxx"
Rujukan Memasukkan teks daripada sesuatu elemen, cth., "Nama anda ialah xxx. Berapakah umur anda?"


Penyimpanan jawapan

Tujuan: (Melakukan sesuatu,) (menulis sebahagian teks) dan menyimpan sesuatu dalam pangkalan data

Jenis soalan Persamaan boleh digunakan untuk menyimpan sesuatu dalam pangkalan data. Anda boleh melakukan sesuatu dengan Ungkapan, memaparkan soalan Persamaan (yang serupa dengan paparan teks) dan menyimpan hasil Ungkapan dalam pangkalan data. Ia menyimpan jawapan ke dalam jadual respons. Kemudian, hasil tersebut boleh digunakan dalam ciri statistik atau diimport ke dalam salah satu format yang disediakan oleh fungsi eksport LimeSurvey.

Contoh Ungkapan

Memasukkan jawapan daripada soalan sebelumnya

Tujuan Memasukkan jawapan daripada soalan sebelumnya
Jenis Rujukan
Contoh Soalan satu (kod soalan "Q00"): Anda tinggal di bandar mana?
Soalan dua (kod soalan "Q01") Sudah berapa lama anda tinggal di CITY?
Untuk dilakukan: Jawapan daripada soalan satu hendaklah digunakan sebagai ganti "CITY" dalam soalan kedua.
Ungkapan {QOO}
Keterangan Jawapan yang diberikan dalam Q00 menggantikan medan Q00 daripada soalan kedua
Langkah Cipta/Edit soalan dua
Masukkan "Sudah berapa lama anda tinggal di {QOO} (tahun)?" ke dalam medan teks soalan

Menggunakan soalan persamaan tersembunyi untuk mengisi jawapan secara automatik

Masalah: Bayangkan anda mempunyai dua soalan Q1 dan Q2. Q1 bertanya umur responden. Q2 membahagikan responden kepada tiga kumpulan: umur di bawah 20 tahun, umur 20 tahun, umur lebih besar daripada 20 tahun. Jadi, Q2 harus menggunakan nilai "1", "2", "3", yang sepadan dengan syarat di atas. Selain itu, jangan lupa menjadikan Q2 tidak kelihatan (soalan tidak akan dipaparkan dalam tinjauan, tetapi nilainya akan disimpan melalui "proses latar belakang" dalam jadual respons).

Untuk mengisi pangkalan data menggunakan jenis soalan Persamaan:

  • Pertama, cipta soalan dengan kod Q1 sebagai soalan Input berangka.
  • Kemudian cipta soalan lain dengan kod Q2 sebagai soalan persamaan.
  • Dalam bahagian tab "Tetapan paparan" bagi Q2:
    • tetapkan medan "Sentiasa sembunyikan soalan ini" kepada "Dihidupkan"
    • taip ungkapan dalam medan "Persamaan":
{if(Q1.NAOK < 20, "1", if(Q1.NAOK > 20, "3", "2"))}

Mencipta halaman ringkasan menggunakan pemegang tempat

Tutorial ini menunjukkan cara anda boleh mencipta gambaran keseluruhan pada akhir tinjauan, yang menyenaraikan semua soalan dan jawapan melalui pemegang tempat ExpressionScript. Ia juga menunjukkan cara menghadkan gambaran keseluruhan tersebut kepada soalan yang telah dijawab sahaja.

Contoh kami boleh dimuat turun di sini: Contoh tinjauan pemegang tempat tinjauan.


Jenis soalan yang digunakan di sini:

1. Soalan pilihan tunggal / soalan teks/numerik tunggal

  • Senarai (Senarai Kebawah)
  • Senarai (Radio) [L]
  • Ya/Tidak [Y]
  • Teks bebas panjang [T]
  • Teks percuma pendek [S]
  • Input berangka [N]
  • Persamaan [*]


2. Soalan dengan subsoalan

  • Teks pendek berbilang [Q]
  • Pelbagai pilihan [M]
  • Tatasusunan [F]
  • Pilihan (Ya/Tidak/Tidak pasti) [C]
  • Tatasusunan (pilihan 10 poin) [B]


3. Soalan dengan 2 skala

  • Skala dwi tatasusunan [1]


4. Soalan dengan skala X dan Y

  • Tatasusunan (Nombor) [:]


5. Topeng soalan

  • Paparan teks [X]


Dalam contoh mudah ini, gambaran keseluruhan kita ialah senarai ringkas yang mengandungi:

- Teks soalan: Jawapan pengguna


Soalan pilihan tunggal / soalan teks/numerik tunggal

Bagi semua jenis soalan ini, LimeSurvey akan menyimpan satu jawapan:

  • Senarai (Senarai Kebawah)
  • Senarai (Radio)
  • Senaraikan dengan komen
  • Pilihan 5 poin
  • Ya/Tidak
  • Teks percuma pendek
  • Teks bebas panjang
  • Teks percuma besar
  • Input berangka
  • Persamaan
  • Tarikh
  • Jantina

Dengan andaian kod soalan bagi soalan tersebut ialah q1, kita boleh merujuk teks soalan dan jawapan menggunakan:

- {q1.question}: {q1.shown}

Contoh:

- Berapakah umur anda?: 25


Jika anda ingin menyemak sama ada soalan tersebut telah dijawab, anda boleh meletakkan pernyataan IF di sekeliling output anda:

{if(!is_empty(q1),join("- ",q1.question,": ",q1.shown),"")}

Ini "diterjemahkan" sebagai: JIKA soalan dengan kod q1 tidak kosong, keluarkan "- " DAN teks soalan DAN ": " DAN teks jawapan (fungsi join() menggabungkan elemen sebagai rentetan baharu); SELAIN ITU: tidak keluarkan apa-apa ("" bermaksud rentetan kosong).

Soalan dengan subsoalan

Bagi semua jenis soalan ini, LimeSurvey menggunakan subsoalan:

  • Teks pendek berbilang
  • Pelbagai pilihan
  • Pelbagai pilihan dengan komen
  • Tatasusunan
  • Tatasusunan (pilihan 5 poin)
  • Tatasusunan (pilihan 10 poin)
  • Pilihan (Ya/Tidak/Tidak pasti)
  • Tatasusunan (Naik/Sama/Turun)
  • Tatasusunan mengikut lajur

Dengan andaian kod soalan bagi soalan tersebut ialah q2 dan subsoalan dinomborkan SQ001, SQ002, (penomboran automatik dilakukan oleh LimeSurvey), kita boleh merujuk teks soalan dan jawapan menggunakan:

- {q2_SQ001.question}: {q2_SQ001.shown}

- {q2_SQ002.question}: {q2_SQ002.shown}

Bagi soalan pelbagai pilihan, adalah lebih sesuai untuk tidak memaparkan teks subsoalan yang ditanda, sebaliknya memaparkan Y bagi setiap pilihan yang dipilih:

- {q2_SQ001.question}: {q2_SQ001}

- {q2_SQ002.question}: {q2_SQ002}

...

Perhatikan bahawa pada masa ini tidak mungkin mengeluarkan teks soalan bagi soalan yang mempunyai subsoalan, lihat permintaan ciri ini.


Contoh 1 (andaikan jenis soalan ialah pelbagai pilihan)

- Adakah anda mengenali jenama kereta ini?

-- Mercedes: Y

-- Audi: N

-- Volvo: Y


Jika anda mahu memaparkan item yang ditandakan sahaja, anda boleh meletakkan pernyataan IF pada output anda dan menyemak nilai kotak semak:

{ if( q2_SQ001=="Y", join( "- ", q2_SQ001.question, ": ", q2_SQ001.shown ), "" ) }


Gunakan fungsi listifop jika anda mahu memaparkan senarai item yang dipilih sahaja, cth: Mercedes, Volvo

{ listifop( 'value', '==', 'Y', 'question', ', ', that.q2.sgqa ) }


Di sini  that.q2  dikembangkan kepada semua subsoalan q2. Lihat self, this dan that untuk butiran lanjut.


Contoh 2 (andaikan jenis soalan ialah Tatasusunan (pilihan 10 poin))

- Sila nilaikan kualiti jenama kereta di bawah pada skala daripada 1=sangat buruk hingga 10=sangat baik?

-- Mercedes: 7

-- Audi: 9

-- Volvo: 9


Jika anda mahu memaparkan item yang dinilai sahaja, anda boleh meletakkan pernyataan IF pada output anda dan menyemak sama ada subsoalan semasa telah dijawab dengan menggunakan:

{ if( ! is_empty( q3_SQ001 ), join( "- ", q3_SQ001.question, ": ", q3_SQ001.shown ), "" ) }


Gunakan fungsi listifop jika anda, sebagai contoh, mahu memaparkan senarai item yang dipilih dengan nilai lebih daripada lapan sahaja, cth: Audi / Volvo

{ listifop( 'value', '>', 8, 'question', ' / ', that.q3.sgqa ) }


Soalan dengan dua skala

Ini hanya terpakai untuk jenis soalan skala dwi sahaja.


Andaikan bahawa kod berikut digunakan:

  • Kod soalan: q4
  • Kod subsoalan: SQ001, SQ002, ...
  • Kod jawapan skala 1: A1, A2, ...
  • Kod jawapan skala 2: B1, B2, ...


Untuk merujuk kepada hasil subsoalan tertentu pada skala tertentu, anda perlu menggunakan QuestionCode . '_' . SubQuestionCode . '_' . ScaleID. Perhatikan bahawa "ScaleID" ialah 0 untuk skala pertama dan 1 untuk skala yang lain!
Contoh untuk merujuk kepada jawapan subsoalan ketiga dan skala kedua: q4_SQ003_1 - Soalan 4, subsoalan 3, skala kedua.


Mari kita paparkan hasil untuk kedua-dua skala dan dua subsoalan pertama:

- {q4_SQ001_0.question}: {q4_SQ001_0.shown} / {q4_SQ001_1.shown}

- {q4_SQ002_0.question}: {q4_SQ002_0.shown} / {q4_SQ002_1.shown}

Untuk memaparkan teks subsoalan, anda perlu menambah ID skala pada pemegang tempat (walaupun teksnya sama untuk kedua-dua skala). Jadi, sebagai ganti {q4_SQ001.question}, kita perlu menggunakan {q4_SQ001_0.question} atau {q4_SQ001_1.question}.

Jika anda mahu mengeksport/memaparkan hasil subsoalan yang mempunyai sekurang-kurangnya satu jawapan sahaja, gunakan sintaks ini untuk setiap subsoalan:

{if(count(q4_SQ001_0,q4_SQ001_1)>0,join("- ",q4_SQ001_0.question,": ",q4_SQ001_0.shown," / ",q4_SQ001_1.shown),"")}

Soalan dengan skala X dan Y

Ini terpakai untuk semua soalan matriks yang membenarkan jawapan bagi setiap sel (bukan hanya setiap baris seperti yang ditunjukkan sebelum ini):

  • Teks Tatasusunan
  • Nombor Tatasusunan


Kod yang diandaikan digunakan:

  • Kod soalan: q5
  • Kod subsoalan: SQ001, SQ002, ...
  • Kod jawapan: A1, A2, ...

Untuk merujuk kepada hasil subsoalan tertentu daripada lajur tertentu, anda perlu menggunakan QuestionCode . '_' . SubQuestionCode . '_' . AnswerCode. Contoh merujuk kepada jawapan subsoalan ketiga dan lajur kedua: q5_SQ003_A2.

Mari kita keluarkan hasil bagi lajur 1-3 untuk dua subsoalan pertama:

- {q5_SQ001_A1.question}: {q5_SQ001_A1.shown} | {q5_SQ001_A2.shown} | {q5_SQ001_A3.shown}

- {q5_SQ002_A1.question}: {q5_SQ002_A1.shown} | {q5_SQ002_A2.shown} | {q5_SQ002_A3.shown}


Memandangkan bagi jenis soalan ini setiap sel (gabungan paksi X dan paksi Y) bersamaan dengan satu pilihan jawapan, ujian untuk data sedia ada perlu dilakukan bagi setiap sel. Contoh:

{if(!is_empty(q5_SQ001_A1),join("- ",q5_SQ001_A1.question,": ",q5_SQ001_A1.shown),"")}


Untuk mengeluarkan teks subsoalan, anda perlu menambah kod jawapan pada pemegang tempat (walaupun teksnya sama untuk semua pilihan jawapan). Jadi, sebagai ganti {q5_SQ001.question}, kita perlu menggunakan {q5_SQ001_A1.question} atau {q5_SQ001_A2.question}.

Sembunyikan soalan jika jawapan daripada soalan sebelumnya kosong

Tujuan Sembunyikan soalan jika jawapan daripada soalan sebelumnya kosong
Jenis Kaitan soalan
Contoh Soalan satu: kod soalan "name", teks soalan "Siapakah nama anda?"
Soalan dua: teks soalan "{name}, berapakah umur anda?"
Tugasan: Sembunyikan soalan dua jika medan teks soalan satu kosong
Ungkapan !is_empty(name)
Keterangan is_empty() menentukan sama ada sesuatu pemboleh ubah dianggap kosong. Tanda "!" menafikan hasilnya. Jadi, jika pemboleh ubah tidak kosong, Ungkapan itu akan benar dan soalan dipaparkan
Langkah Cipta/edit soalan dua
Masukkan "!is_empty(name)" ke dalam "Persamaan kaitan"
Fail contoh Hide_question_if_empty_question_group.zip


Sembunyikan kumpulan soalan jika jawapan daripada soalan sebelumnya ialah Ya atau Tidak

Tujuan Sembunyikan kumpulan soalan jika jawapan daripada soalan sebelumnya ialah Ya atau Tidak
Jenis Kaitan kumpulan soalan
Contoh Halaman satu, Kumpulan soalan satu, Soalan satu: kod soalan "PET", teks soalan "Adakah anda mempunyai haiwan peliharaan?" -Ya -Tidak
Halaman dua, Kumpulan soalan dua: Tajuk "Tentang haiwan peliharaan anda"
Tugasan: Paparkan/sembunyikan kumpulan soalan dua jika jawapan daripada soalan satu ialah Ya/Tidak
Ungkapan PET == "Y"
Keterangan PET ialah kod soalan bagi soalan yang jawapannya ingin anda semak. Jika anda tidak menggunakan akhiran, EM akan menggunakan "Qcode.code". Jadi, anda membandingkan kod jawapan daripada soalan PET dengan nilai "Y". Jika peserta menjawab "Ya", Ungkapan itu benar dan kumpulan soalan "Tentang haiwan peliharaan anda" akan dipaparkan.
Langkah Cipta/edit kumpulan soalan dua
Masukkan "PET == "Y"" ke dalam "Persamaan kaitan"
Fail contoh Hide_question group_if_answer_from_previous_question_is_Yes_or_No.zip


Paparkan nilai medan soalan input berbilang jawapan

Tujuan Paparkan nilai medan soalan input berbilang jawapan
Jenis Rujukan
Contoh Soalan satu: kod soalan "AskChildAge", teks soalan "Berapakah umur anak-anak anda?". Kod subsoalan -Child1 -Child2 -Child3 - ChildXXX
Soalan dua: kod soalan "ReportChildAge" teks soalan "Tentang anak pertama anda: - CHILD1 berumur AGE1."
Ungkapan {AskChildAge_Child1.question}, {AskChildAge_Child1.value}
Keterangan Anda ingin menggunakan nilai subsoalan dalam soalan berikutnya. Anda boleh mengakses nilai subsoalan dengan ungkapan seperti ini: QcodeQuestion_QcodeSubquestion.value
Langkah Cipta/edit soalan kedua
Masukkan teks ini dalam keterangan: "Tentang anak pertama anda: - {AskChildAge_Child1.question} berumur {AskChildAge_Child1.value}."
Fail contoh Display_value_of_a_multiple_answer_input_question_field.zip

Sahkan bilangan kotak yang ditanda bagi setiap baris untuk soalan "Tatasusunan (Nombor) Kotak pilihan"

Tujuan Sahkan bilangan kotak yang ditanda bagi setiap baris
Jenis Pengesahan
Contoh Soalan berjenis "Tatasusunan Nombor (Susun atur kotak pilihan)"
Ungkapan sum(...)
Keterangan (sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= X) menentukan sama ada sekurang-kurangnya X kotak pilihan dalam baris A ditanda.
Jika anda ingin menyemak ketiga-tiga baris (A, B, C), anda boleh menyambungkan ungkapan menggunakan "&&":
(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= X)
&& (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= X)
&& (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= X)
Langkah Cipta/edit soalan berjenis "Tatasusunan Nombor (Susun atur kotak pilihan)".
Masukkan ungkapan di atas ke dalam "Persamaan pengesahan soalan" pada tetapan soalan lanjutan (anda mungkin perlu melaraskan penamaan pemboleh ubah!).
Fail contoh Validate number of boxes ticker per row for an Array (Numbers) Checkbox.lss

Kira perbezaan antara dua tarikh

Tujuan Kira perbezaan antara dua tarikh
Jenis Kaitan / Jenis soalan persamaan / Pengesahan
Contoh Soalan satu (tarikh/masa, kod: DOB): Apakah tarikh lahir anda?
Soalan dua (tarikh/masa, kod: datetoday): Apakah tarikh hari ini?
Soalan tiga (boilerplate): Anda berumur XXXX hari.
Tugasan: Kira dan paparkan bilangan hari antara tarikh yang diberikan dalam soalan 1 dan soalan 2.
Ungkapan {(strtotime(datetoday)-strtotime(DOB))/60/60/24}
Keterangan strtotime mengira bilangan saat antara 1 Januari 1970 dan tarikh yang diberikan. Ungkapan di atas mengira bilangan saat antara dua tarikh yang diberikan. Sebutan "/60/60/24" hanya mengira bilangan hari daripada bilangan saat.
Sebagai ganti bertanya "datetoday", anda juga boleh menggunakan strtotime('now') atau sekadar time(), yang terus memulangkan bilangan saat dari Januari 1970 sehingga sekarang (iaitu masa tinjauan diambil). Dengan itu, anda boleh mengetahui umur seseorang dalam tahun dengan pantas menggunakan persamaan {(time() - strtotime(DOB)) / 60 / 60 / 24 / 365.25} Dalam mana-mana kes ini, adalah penting tarikh dimasukkan dalam format yang betul, jika tidak fungsi strtotime() tidak akan berfungsi dengan betul.
Langkah Cipta dua soalan tarikh (untuk tarikh lahir dan untuk tarikh hari ini) dan satu soalan boilerplate.
Dalam teks soalan bagi soalan boilerplate, masukkan: "Pada {datetoday} anda berumur {(strtotime(today)-strtotime(dob))/60/60/24} hari."

Sila ambil perhatian: Fungsi strtotime boleh berfungsi dengan BANYAK tetapi bukan semua format tarikh. Jika anda menghadapi masalah, tetapkan Format tarikh tinjauan anda kepada mm/dd/yyyy atau yyyy-mm-dd atau dd.mm.yyyy"
Fail contoh Date_difference.zip

Menggunakan ExpressionScript untuk Penilaian

Berikut ialah satu lagi contoh cara menggunakan ExpressionScript dengan soalan jenis tatasusunan dan penilaian:</ br>

Katakan anda mempunyai 2 soalan tatasusunan dan anda ingin menyimpan hasil data pengiraan ke dalam pangkalan data anda. Ia sebenarnya mudah, anda perlu mencipta dan menguji tatasusunan anda serta menghantar jawapan palsu untuk melihat sama ada ia berfungsi dan memberikan hasilnya pada halaman selesai.


Butiran pelaksanaan:

  • tambah soalan berjenis persamaan
  • tambah baris berikut dengan andaian Q1 ialah kod soalan tatasusunan anda manakala Q2 ialah yang kedua:
    • {sum(Q1_SQ001.value,Q2_SQ001.value)}

Perhatikan bahawa SQ001 ialah kod lalai bagi mana-mana subsoalan. Jika anda menukar kod subsoalan, laraskan persamaan di atas dengan sewajarnya.


Menggunakan em_validation_q dalam tatasusunan

Anda boleh menggunakan persamaan pengesahan soalan untuk mengawal tatasusunan dengan sebarang syarat.


Butiran pelaksanaan:

  • untuk tatasusunan pertama : tatasusunan pilihan tunggal
    • Kod soalan ialah ARRAY
    • Kod subsoalan ialah SQ01,SQ02,SQ03 dan SQ04
    • kemas kini Persamaan pengesahan keseluruhan soalan dan masukkan
      !is_empty(ARRAY_SQ01) and !is_empty(ARRAY_SQ03) 
  • untuk tatasusunan kedua : tatasusunan teks
    • Kod soalan ialah ARRAYTEXT
    • Kod subsoalan pada paksi Y ialah SY01,SY02,SY03, dan SY04
    • Kemas kini Persamaan pengesahan keseluruhan soalan dan masukkan
      count(self.sq_SY01 >= 1) and count(self.sq_SY03 >= 3)