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

جلب أول رقم بعد الفاصلة باستخدام PHP

Khaled Mohammed7

السؤال

لدي رقم يتكون من عدة خانات كل خانة بها ٤ ارقام اريد جلب اول رقم من كل خانة 

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

اريد النتيجة تكون 

21,22,23,24,25,26,27,28

طبعا استخدم لغة php

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...