سؤال

وأود أن كتابة دالة أن (من بين أمور أخرى) يقبل عدد متغير من الوسائط ومن ثم ينقلها إلى 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 (). هذا سهل:)

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