質問
私は(完全な)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","","",""
これは理にかなっていますか?
マーティンに感謝します
正しい解決策はありません
他のヒント
3つの空の文字列を含む6つのアイテムを含む配列がある場合:
$arr = array('cat1', 'cat2', 'cat3', '', '', '');
あなたはできる implode
それらは文字列に、このように:
echo '"' . implode('","', $arr) . '"';
そして、次の出力が得られます。
"cat1","cat2","cat3","","",""
基本的、 implode
セパレーターを使用して、配列のすべてのアイテムを文字列に入れることができます - ここでは、セパレーターは ","
これがあなたの弦の間でできることです。
そして、分離器を要素の間に塗装するだけなので、添加物を置く必要があります "
結果の文字列の最初と最後に。
(私があなたの意味を理解したことを願っています...)
コメントの後に編集します:
わかりました、もしあなたの場合 $arr
アレイには、最初に6つのアイテムが含まれていません。
$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",""