2012-02-28 127 views
0

我想迭代一個數組,並從該數組中創建一個字符串。 但是,每個字符串都需要具有一定的大小(500字節)。基於數組創建X長度的字符串

所以我的數組是這樣的:

Array 
(
    [0] => Array 
     (
      [name] => shirt 
      [price] => 1.25 
     ) 

    [1] => Array 
     (
      [name] => car 
      [price] => 25.10 
     ) 
    ... 
) 

$str = ""; 

foreach($arr as $v) { 
    $str .= "<name>".$v['name']."</name>"; 
    $str .= "<price>".$v['price']."</price>"; 
} 

輸出應該是這樣的:

str1 = '<name>shirt</name><price>1.25</price><name>car</name><price>25.10</price>...' // until 500 bytes or less. 
str2 = '<name>shirt</name><price>1.25</price><name>car</name><price>25.10</price>...' // until 500 bytes or less. 

//我需要完整的標籤。因此,我不能有一個字符串,它看起來像:

str = '<name>flower</name><pri'; 
+0

爲什麼不告訴我們爲什麼要這樣做讓我們告訴你正確的方法? – Xeoncross 2012-02-28 21:28:16

+0

基本上,我需要包含兩個標籤''和''的字符串。所以我想將多個數組元素推入一個字符串中。但是因爲我知道數組有很多元素,而且我也知道每個字符串必須少於500個字節,那麼可能需要幾個字符串。 – Kayla 2012-02-28 21:44:33

+0

您或者需要500個字符的字符串,或者您需要遵守標籤邊界的字符串。你不能擁有兩個。 – 2012-02-28 21:51:49

回答

1

將每個段保存爲少於500個字符。

$xml = array(); 
$str = ''; 
foreach($arr as $v) 
{ 
    $temp = "<name>".$v['name']."</name>"; 
    $temp .= "<price>".$v['price']."</price>"; 

    if(mb_strlen($str . $temp) > 500) 
    { 
     $xml[] = $str; 
     $str = ''; 
    } 
    $str = $temp; 
} 
$xml[] = $str; 

print_r($xml); 
+0

很好。謝謝!! – Kayla 2012-02-28 22:34:13

1

str_split聽起來是個不錯的人選。

+0

良好的默認值,但看起來像上面的XML,如果它像這樣分裂將是無效的。 – Xeoncross 2012-02-28 21:28:47

+0

你說得對。我以爲Kayla想要以小塊形式輸出輸出。 – juanrpozo 2012-02-28 21:32:39

+0

'str_split'的問題是,它會在錯誤的地方打斷字符串。所有的字符串都應該包含這兩個標籤:'name','price' – Kayla 2012-02-28 21:38:45