0

ユーザー入力を次のように保存する必要があるシーンで立ち往生しています...(1回でこれらの結果が得られます)

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

これらすべての値をデータベースに保存する必要があります (一意のペアのみ)。

私がこれまでに試したことは、 $string を「、」で展開し、すべてを次のような配列に格納した

$array["a"] = "php";...しかし、これは a = Java も上書きします... //問題

それらがすでに存在するかどうかをデータベースでチェックインする必要はありません..これはすでに処理されています(一度にダンプされたすべてのデータが一意の識別子を取得します)。

私がする必要があるのは、一意のペアを取得してデータベースにダンプすることだけです...つまり

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

私が見ることができた唯一の解決策は...爆発した後...新しく識別された一意の識別されたmysql_num_rowsに対してdbのペアをチェックします...存在しない場合はダンプします...

何か簡単な方法はありませんか...??

4

2 に答える 2

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
    )

)
于 2013-03-25T11:59:40.173 に答える
-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
    )

 )
于 2013-03-24T07:05:22.440 に答える