ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันมีปัญหาเช่น OP และนี่คือสิ่งที่ฉันคิดขึ้นมา
ตัวอย่างอาร์เรย์ที่คุณส่งผ่านได้ คุณสามารถสั่งซื้อใหม่ได้หากต้องการคำสั่งซื้อใดคำสั่งหนึ่ง แต่สำหรับคำถามนี้สิ่งนี้จะทำตามที่ถาม
$argument_set = array (8 => 'lots', 5 => 'of', 1 => 'data', 2 => 'here');
สิ่งนี้สามารถจัดการได้อ่านง่ายและสามารถเพิ่มและลบจุดสกัดข้อมูลได้ในเวลาที่สังเกตเห็นได้ทุกที่ในการเข้ารหัสและยังหลีกเลี่ยงการเขียนซ้ำจำนวนมาก ฉันใช้คีย์จำนวนเต็มเพื่อนับรวมกับคำถามดั้งเดิมของ OP แต่สามารถใช้คีย์สตริงได้อย่างง่ายดาย ในความเป็นจริงเพื่อการอ่านฉันจะแนะนำ
ติดสิ่งนี้ในไฟล์ภายนอกเพื่อความสะดวก
function unknown_number_arguments($argument_set) {
foreach ($argument_set as $key => $value) {
# create a switch with all the cases you need. as you loop the array
# keys only your submitted $keys values will be found with the switch.
switch ($key) {
case 1:
# do stuff with $value
break;
case 2:
# do stuff with $value;
break;
case 3:
# key 3 omitted, this wont execute
break;
case 5:
# do stuff with $value;
break;
case 8:
# do stuff with $value;
break;
default:
# no match from the array, do error logging?
break;
}
}
return;
}
วางไว้ที่จุดเริ่มต้นหากไฟล์.
$argument_set = array();
เพียงใช้สิ่งเหล่านี้เพื่อกำหนดส่วนต่อไปของข้อมูลให้ใช้การกำหนดหมายเลข / การตั้งชื่อตามที่มาของข้อมูล
$argument_set[1][] = $some_variable;
และส่งอาร์เรย์ในที่สุด
unknown_number_arguments($argument_set);