اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يمكنك أن تستعمل دالة explode التي تستعمل لتقسيم نص معين، فعلى سبيل المثال يمكن أن تقوم بتقسيم النص الذي لديك بإستخدام الفاصلة، كالتالي:

<?php

$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";
$num_arr = explode(',', $number);
print_r($num_arr);	# Output: Array ( [0] => 21 1 10 0 [1] => 22 0 0 0 [2] => 23 0 0 0 [3] => 24 0 0 0 [4] => 25 0 0 0 [5] => 26 0 0 0 [6] => 27 0 0 0 [7] => 28 0 0 0 )

بعد ذلك يمكنك المرور على كل عنصر في هذه المصوفة وتقسيمه مرة أخرى بإستخدام دالة explode من خلال المسافات كالتالي:

$counter = count($num_arr);
for ($i = 0; $i < $counter; $i++) {
    echo explode(" ", $num_arr[$i])[0];
    echo ",";
}

# Output: 21,22,23,24,25,26,27,28,

بالطبع يمكنك حذف الفاصلة الأخيرة (الموجودة بعد رقم 28) من خلال إضافة شرط للتحقق مما إذا كان العنصر هو الأخير أم لا كالتالي:

$counter = count($num_arr);
for ($i = 0; $i < $counter; $i++) {
    echo explode(" ", $num_arr[$i])[0];
    if ($i != $counter -1 ) {
      echo ",";
    }
}
                           
# Output: 21,22,23,24,25,26,27,28

 

  • 0
نشر

يمكننا تعريف متغير و ليكن باسم 

$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";

ثم ننشأ متغير أخر لنقوم بتقسيم الأرقام عن طريق الفاصلة بهذه الطريقة 

$_arr                    = explode(',', $number);

ثم ننشأ حلقة تكرار من نوع foreach بهذا الشكل 

$_c                      = 0;
foreach ($_arr as $str) {
	++$_c;
	list($first, $second, $third, $fourth) = explode(' ', $str);
		echo $first, ',';
}

فلاحظ أننا قمنا بأنشاء متغير لنضيف له مقدار 1 في كل مرة تتكرر فيها الحلقة , ايضا قمنا بإنشاء 4 متغيرات حسب الأربع خانات لديك بحيث المتغير 

$first لأول خانة, 
$second لثاني خانة,
$third لثالث خانة, 
$fourth لرابع خانة

ومن ثم قمنا بطباعة الأرقام الموجودة في أول خانة بهذا الشكل 

echo $first, ',';

و إذا أردنا طباعة أرقام ثاني خانة 

echo $second, ',';

 

  • 0
نشر (معدل)

نقوم أولا باستخراج كل اربعة ارقام من النص الى مجموعة، وذلك بتقسيم النص عند كل فاصلة باستخدام التابع 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

 

 

 

تم التعديل في بواسطة Hassan Hedr

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...