簡體   English   中英

關於數組的PHP問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM