سؤال

أنا (كامل) php noob وأحتاج إلى القليل من المساعدة في شيء ما.

أنا أعمل في مشروع يمكن للمستخدم فيه تحديد ما يصل إلى 6 فئات عبر نموذج (أنا أستخدم ExpressionEngine). الإخراج مثل هذا:

"Cat1","Cat2","Cat3"

...وهلم جرا. يمكن للمستخدم تحديد ما يصل إلى 6 فئات على هذا النموذج.

ما أحتاجه: حتى لو كانت نتيجتي هي 3 فئات أحتاج إلى الحصول على 6 "خلايا" - لعدم وجود كلمة أفضل - حتى لو كانت فارغة:

"Cat1","Cat2","Cat3","","",""

لقد جربت هذا:

<?php
$str = '(output goes here)';
print_r(explode(',', $str, 6));
?>

... لكن الإخراج يعطيني:

Array
(
[0] => Cat1
[1] => Cat2
[2] => Cat3
[3] =>
[4] =>
[5] =>

)

كيف أحصل من ذلك إلى هذا:

"Cat1","Cat2","Cat3","","",""

هل لهذا معنى؟

شكرا مارتن

لا يوجد حل صحيح

نصائح أخرى

إذا كان لديك صفيف يحتوي على 6 عناصر ، بما في ذلك 3 سلاسل فارغة:

$arr = array('cat1', 'cat2', 'cat3', '', '', '');

تستطيع implode هؤلاء في سلسلة ، بهذه الطريقة:

echo '"' . implode('","', $arr) . '"';

وستحصل على الإخراج التالي:

"cat1","cat2","cat3","","",""


أساسًا، implode يتيح لك وضع جميع عناصر الصفيف في سلسلة ، باستخدام فاصل - هنا ، الفاصل هو "," وهو ما تستطيع بين خيوطك.

وكما انفجر نضع الفاصل بين العناصر فقط ، علينا أن نضع إضافة " في البداية وفي نهاية السلسلة الناتجة.


(أتمنى أن أفهم ما قصدته ...)



تحرير بعد التعليق:

حسنًا ، إذا $arr لا يحتوي المصفوفة على ستة عناصر في البداية:

$arr = array('cat1', 'cat2', 'cat3');

يمكن أن يكون الاحتمال لإنشاء صفيف مع عناصر فارغة ؛ مثل هذا ، على سبيل المثال:

$count = count($arr);

// Create an array with empty elements
$padding = array_fill($count, 6-$count, '');
var_dump($padding);

ثم ، أضفها إلى $arr مجموعة مصفوفة :

// Add the empty elements to $arr
$arr = $arr + $padding;

(يمكنك أيضًا استخدامها array_merge, ، أفترض)

والآن ، العودة إلى implode :

echo '"' . implode('","', $arr) . '"';

وهذه المرة مرة أخرى ، ستحصل على:

"cat1","cat2","cat3","","",""


هذا ما var_dump($padding); يعطي ، للمعلومات:

array
  3 => string '' (length=0)
  4 => string '' (length=0)
  5 => string '' (length=0)

ونعم ، يمكنك استخدام + مشغل مع المصفوفات (نقلاً) :

ال + يلحق المشغل عناصر المفاتيح المتبقية من الصفيف الأيمن إلى اليسار ، في حين أن المفاتيح المكررة لا يتم الكتابة عليها.


إذا كان لديك $arr يمكن أن يكون أطول من 6 عناصر ، يمكنك استخدامها array_slice لإزالة العناصر غير المطلوبة:

$arr = array('cat1', 'cat2', 'cat3', '', '', '', '');
$arr = array_slice($arr, 0, 6);
echo '"' . implode('","', $arr) . '"';

يمكنك المحاولة:

$org = '"Cat1","Cat2","Cat3"';
$arr = explode(',',$org);
$arr = array_merge($arr,array_fill(count($arr),6-count($arr),'""'));
$str = implode(',',$arr);
echo($str); // prints "Cat1","Cat2","Cat3","","",""

يعمل حتى عندما $org لديها 6 أو أقل قطط:

إذا $org = "Cat1","Cat2","Cat3","cat4","cat5"

$str سوف يكون "Cat1","Cat2","Cat3","cat4","cat5",""

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