يمر قائمة وسيطة متغير لsprintf ()
-
05-07-2019 - |
سؤال
وأود أن كتابة دالة أن (من بين أمور أخرى) يقبل عدد متغير من الوسائط ومن ثم ينقلها إلى sprintf ().
وعلى سبيل المثال:
<?php
function some_func($var) {
// ...
$s = sprintf($var, ...arguments that were passed...);
// ...
}
some_func("blah %d blah", $number);
?>
وكيف أفعل هذا في PHP؟
المحلول
function some_func() {
$args = func_get_args();
$s = call_user_func_array('sprintf', $args);
}
// or
function some_func() {
$args = func_get_args();
$var = array_shift($args);
$s = vsprintf($var, $args);
}
ومتغير مؤقت $args
ضروري، لأن func_get_args
أ > لا يمكن أن تستخدم في القائمة حجج وظيفة في إصدارات PHP قبل إلى 5.3.
نصائح أخرى
واستخدام مزيج من func_get_args
و <لأ href = "http://php.net/call_user_func_array" يختلط = "نوفولو noreferrer"> call_user_func_array
function f($var) { // at least one argument
$args = func_get_args();
$s = call_user_func_array('sprintf', $args);
}
واستخدام $ numargs = func_num_args ()؛ وfunc_get_arg (ط) لاسترداد حجة
وهنا هو الطريقة:
HTTP: //www.php صافي / دليل / EN / functions.arguments.php # functions.variable-ARG القائمة
وفي الأساس، تقوم بتعريف الدالة كالعادة، بدون معلمات، ثم استدعاء func_num_args () لمعرفة عدد الحجج التي مرت عليك، ومن ثم تحصل كل واحد من خلال الدعوة func_get_arg () أو func_get_args (). هذا سهل:)