نقوم أولا باستخراج كل اربعة ارقام من النص الى مجموعة، وذلك بتقسيم النص عند كل فاصلة باستخدام التابع explode :
$number_groups = explode(',', $number);
/**
$number_groups = [
"21 1 10 0",
"22 0 0 0",
"23 0 0 0",
"24 0 0 0",
"25 0 0 0",
"26 0 0 0",
"27 0 0 0",
"28 0 0 0"
]
*/
أصبح لدينا مصفوفة تحوي مجموعات الارقام، نمر على كل مجموعة باستخدام التابع array_map، ونستخرج منها أول رقم وذلك بتقسيم نص المجموعة الى اربعة ارقام عن طريق التقسيم عند كل فراغ باستخدام نفس التابع السابق explode :
$first_numbers = array_map(function ($group) { // تابع ينفذ لكل عنصر في المصفوفة
// $group = "21 1 10 0"...
$numbers = explode(' ', $group); // نستخرج الارقام الاربعة
// $numbers = ["21", "1", "10", "0"]
$first_number = $numbers[0]; // نختار أول رقم
// $first_number = ["21"]
return $first_number; // نعيد القيمة التي نريد التبديل بها
}, $number_groups);
// $first_numbers = ["21", "22", "23", "24", "25", "26", "27", 28"]
أصبح لدينا مصفوفة الارقام التي نريدها اذا اردتها على شكل نص "21,22,23,24,25,26,27,28" تقوم بجمع عناصر المصفوفة بنص وبفاصلة المحرف "," باستخدام التابع implode كما يلي
$result = implode(',', $first_numbers);
// $result "21,22,23,24,25,26,27,28"
يمكنك جمع الخطوات ووضعها في تابع واحد لسهولة الاستخدام
function extractFirstNumbers($number)
{
$number_groups = explode(',', $number);
$first_numbers = array_map(function ($group) {
$numbers = explode(' ', $group);
$first_number = $numbers[0];
return $first_number;
}, $number_groups);
$result = implode(',', $first_numbers);
return $result;
}
واستخدامه كما يلي
$number = "21 1 10 0,22 0 0 0,23 0 0 0,24 0 0 0,25 0 0 0,26 0 0 0,27 0 0 0,28 0 0 0";
echo extractFirstNumbers($number);
// يطبع التالي
// 21,22,23,24,25,26,27,28