2013-05-06 97 views
-3

出於某種原因,我有一個這樣的數組,我想提取每個鍵的2個第一部分,一些鍵包含5個由','分隔的字符串,而其他含有2個串的分離雅「」 例:提取數組中的鍵值的一部分php

array (
    'kksgzgg , kdhdhk', 
    'jjj , jjd , jsjs , sjsj , jjsjs', 
    'kksksk , kdkdkk', 
    'jjj , jjd , jdjdjdj , jjd , jdjdjddj', 
    'jjj , jjd , jdjdj , jjsj , sjsjsj', 
    'jjj , jjd' 
); 

我需要與在每個鍵中僅有2元件(由逗號分隔)導致一個這樣的:

Array ( 
    [0] => kksgzgg , kdhdhk 
    [1] => jjj , jjd 
    [2] => kksksk , kdkdkk 
    [3] => jjj , jjd 
    [4] => jjj , jjd 
    [5] => jjj , jjd 
) 

感謝您的幫助

回答

2

您可以用下面的功能做到這一點:

例子:

$newArray = array(); 
foreach ($oldArray as $value) { 
    $newArray[] = implode(',', array_slice(explode(',', $value, 3), 0, 2)); 
} 

print_r($newArray); 

輸出:

Array 
(
    [0] => kksgzgg , kdhdhk 
    [1] => jjj , jjd 
    [2] => kksksk , kdkdkk 
    [3] => jjj , jjd 
    [4] => jjj , jjd 
    [5] => jjj , jjd 
) 

說明:

的代碼foreach裏面可以用臨時變量,這可能使得它更容易理解發生了什麼被改寫。以下代碼是等效於上面的一行程序:

$parts   = explode(',', $value, 3); 
$subsetOfParts = array_slice($parts, 0, 2); 
$gluedTogether = implode(',', $subsetOfParts); 
$newArray[] = $gluedTogether; 

這四個線在foreach期間由一個施加於所有的值的陣列1英寸假設我們正在爲這個$value這樣做:

'jjj , jjd , jsjs , sjsj , jjsjs' 

第一行用逗號分割的值。第三個參數3控制你有多少元素$parts得到:

[0 => 'jjj ', [1] => ' jjd ', [2] => ' jsjs , sjsj , jjsjs'] 

第二行將創建$parts只包含第一和第二元素的數組,這樣的結果將是

[0 => 'jjj ', [1] => ' jjd '] 

第三行會用逗號膠水部分的子集到一起,讓您得到

'jjj , jjd' 

這STRI ng然後被添加到$newArray

0

試試這個:

$clean_array = array(); 

foreach($array as $value) { 
    $clean_array[] = implode(',', array_slice(explode(',' $value), 0, 2); 
} 

echo '<pre>', print_r($clean_array, true), '</pre>'; 
2

一種替代我的其他的解決辦法是使用

例子:

$newArray = preg_replace(
    '/ 
     (   # capture any string 
      [^,]*  # that is not a comma 
      ,   # up to a comma 
      [^,]*  # followed by any character not a comma 
     )    # into group $1 
     .*   # followed by any amount of characters 
    /x', 
    '$1', 
    $oldArray 
); 

沒有聯文檔:

$newArray = preg_replace('/([^,]*,[^,]*).*/', '$1', $oldArray); 
+0

相關:什麼是官方禮儀上回答問題的兩倍(http://meta.stackexchange.com/questions/25209/what-is-the-官方禮儀上,回答-A-問題,兩次) – Gordon 2013-06-15 14:40:08