سؤال
أنا (كامل) 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",""