2013-03-24 28 views
0

我被困在其中之情况我需要保存用户的输入像...(1分走我得到这些reuslt)独特的双数组存储在PHP

$string = "'a':'php,'b':'.Net' ... 
'c' 'java' 
'c' 'php' 
'c' 'java' 
'a' 'php' 
'a' 'java' "; 

现在我需要存储所有这些数据库中的值(只有唯一对)。

我的尝试到目前为止,分解$字符串“”,并存储在一切的阵列等

$阵列[‘一个’] =‘PHP’; ...但是这将覆盖一个= java的太... ...//问题

我不需要检查数据库,如果他们已经存在或不..这是已经处理(所有转储的数据在一个去得到一个唯一的标识符)。

所有我需要做的是让独特的对和转储到数据库...含义

a = php, a = java, b = .net, c = java, c=php 

唯一能做的我能看到的是...后爆炸......检查了一对分贝反对新的唯一标识... mysql_num_rows ...如果不存在然后转储其他不...

有什么简单的方法...?

回答

-1
$string = "'a':'php,'b':'.Net','c':'java','c':'php','c':'java','a':'php','a':'java'"; 

$temp = array_map(function($item) { 
    list($key, $value) = explode(':', $item); 
    return array(str_replace("'", "", $key) => str_replace("'", "", $value)); 
}, explode(",", $string)); 

$results = array(); 

foreach($temp as $item) { 
    $key = key($item); 
    if(!isset($results[$key]) || !in_array($item[$key], $results[$key])) { 
     $results[$key][] = $item[$key]; 
    } 
} 

print_r($results); 

输出:

Array 
(
    [a] => Array 
    (
     [0] => php 
     [1] => java 
    ) 

    [b] => Array 
    (
     [0] => .Net 
    ) 

    [c] => Array 
    (
     [0] => java 
     [1] => php 
    ) 

) 
0

你的目的,最好的方法是创建多维数组

  <?php 

     $string = "'a':'php','b':'.Net','c':'java','c':'php','c':'java','a':'php','a':'java'"; 
     $array = array(); 

     $temp_arr = explode(",", $string); 

     foreach($temp_arr as $key=>$value) 
     { 
      list($tempkey,$tempValue) = explode(':', $value); 
      $tempKey = trim($tempkey,"'"); 
      $tempValue = trim($tempValue,"'"); 
      $array[$tempKey][] = $tempValue; 
     } 


     $array = array_map('array_unique',$array); 

     echo "<pre>"; 
     print_r($array); 

     ?> 

输出将是

Array 
(
[a] => Array 
    (
     [0] => php 
     [2] => java 
    ) 

[b] => Array 
    (
     [0] => .Net 
    ) 

[c] => Array 
    (
     [0] => java 
     [1] => php 
    ) 

)