[英]php question regarding arrays
我是一個(完整的)php新手,需要一些幫助。
我正在研究一個項目,用戶可以通過表單選擇多達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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.