2013-06-20 58 views
1

我有PHP變種與多個字符串值和數字,PHP字符串和數字到一個數組

$string = 'Simple 12, Complex 16'; 

我爆炸這對一個數組,但我需要爆炸該字符串是象下面陣列。

Array(
    [0] => Array(
     [Simple] => 12, 
     [Complex] => 16 
    ) 
) 

什麼是完美的方式來做到這一點在PHP?

+0

是否總是[一個字] [編號],[一個字] [編號] –

+3

這很簡單。你在努力解決這個問題? –

+0

我可以爆炸這樣的陣列([0] =>'簡單12','複雜16'),但我不知道如何做下一級:分別提取數字和字符串。 –

回答

2

下面是一個簡單的方法:

preg_match_all('/(\w+)\s*(\d+)/', $str, $matches); 
$result = array_combine($matches[1], $matches[2]); 
2
<?php 
$string = 'Simple 12, Complex 16'; 
$values=explode(",",$string); 
$result=array(); 
foreach($values as $value) 
{ 
    $value=trim($value); 
    list($type,$count)=explode(" ",$value); 
    $result[0][$type]=$count; 
} 
print_r($result); 
?> 

輸出

Array 
(
    [0] => Array 
     (
      [Simple] => 12 
      [Complex] => 16 
     ) 

) 

Demo

+0

謝謝,但是如果該字符串得到的字符串和數字沒有像'Complex16'那樣的空格呢?,再次感謝。 –

+0

那麼這又是另一個故事了,請問'複雜'總是一個詞嗎? –

0
<?php 
preg_match_all("/[A-Za-z]+/","Simple 12, Complex 16",$keys); 
preg_match_all("/[0-9]{2}/","Simple 12, Complex 16",$vals); 
$a = array_combine($keys[0],$vals[0]); 
print_r($a); 

嘗試一下

1

做這樣的,如果你想出去把這樣的。

<?PHP 
    $string = 'Simple 12, Complex 16'; 
    $my_arr1 = explode(',',$string); 
    foreach ($my_arr1 as $value) { 
     $value=trim($value); 
     $my_arr2 = explode(' ',$value); 
     $final_array[$my_arr2[0]]=$my_arr2[1]; 
    } 
    print_r($final_array); 

輸出

Array 
(
    [Simple] => 12 
    [Complex] => 16 
) 
+0

謝謝,Jazakkallah。有用。 –

0

來自用戶的 「O手帕PankyØ」 的回覆,有一個錯誤:

這裏:

$result[0][$type]=$count; 

正確的是:

$result[][$type]=$count; 
0
preg_match_all('/(\w+)\s*(\d+)/', $string, $matc); 

$output = array_combine($match[1], $match[2]); 
相關問題