在php中以数组存储的唯一对

时间:2013-03-24 06:38:58

标签: php arrays

我被困在一个场景中,我需要保存用户输入,如...(在1中我得到这些重新开始)

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

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

到目前为止,我尝试过使用""爆炸$ string;并将所有内容存储在数组中,如

$ array [" a"] =" php&#34 ;; ...但这会覆盖a = java too ... //问题

我不需要在数据库中检查它们是否已存在......这已经处理完毕(所有转储数据一次性获取唯一标识符)。

我需要做的就是获得唯一的对并转储到数据库......意味着

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

只有我能看到的解决方案是...爆炸后...检查数据库中的对与新的唯一标识... mysql_num_rows ...如果不存在则转储其他不...

有没有简单的方法...... ??

2 个答案:

答案 0 :(得分: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
    )

)

答案 1 :(得分:-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
    )

 )