2017-06-22 10 views
-1

配列の動作が異常になっています。私は重複キーを持つ配列を取得しています。私はこれがキーのデータ型によるものであることを確認しました。どのように私はそれをユニークにすることができます。私がチェックしarray_key_exists()機能を試してみました配列から重複キーを削除する

Array 
(
    [1811258] => stdClass Object 
     (
      [status] => true 
      [count] => 1 
      [price] => 2501 
      [attributes] => 
      [groupid] => 2400 
      [subgroupid] => bux_364905 
      [desc] => GE Refrigerator - Side by Side GC5SHEXNQ.. 
      [id] => 1811258 
     ) 

    [1812193] => stdClass Object 
     (
      [status] => true 
      [count] => 1 
      [price] => 293 
      [attributes] => 
      [groupid] => 2410 
      [subgroupid] => 0 
      [desc] => STAINLESS STEEL DOUBLE BOWL - 20 GAUGE 
      [id] => 1812193 
     ) 

    [1811258] => stdClass Object 
     (
      [status] => 1 
      [count] => 1 
      [price] => 2501 
      [attributes] => 
      [groupid] => 2400 
      [subgroupid] => bux_364905 
      [desc] => GE Refrigerator - Side by Side GC5SHEXNQ.. 
      [id] => 1811258 
     ) 

    [1852936] => stdClass Object 
     (
      [status] => 1 
      [count] => 1 
      [price] => 525 
      [attributes] => 
      [groupid] => 2489 
      [subgroupid] => 0 
      [desc] => 
      [id] => 1852936 
     ) 

    [1812193] => stdClass Object 
     (
      [status] => 1 
      [count] => 1 
      [price] => 293 
      [attributes] => 
      [groupid] => 2410 
      [subgroupid] => 0 
      [desc] => STAINLESS STEEL DOUBLE BOWL - 20 GAUGE 
      [id] => 1812193 
     ) 

) 

:これは配列です

$saved=(array)json_decode($reviewdata->options); 
foreach($optioncodes as $key=>$optioncode){ 
     $option=$wpdb->get_row("SELECT * from {$prefix}builder_phaseplanoption where OptionCode='{$optioncode}' and SubdivisioNID='{$subdivision}'"); 
     if($option){ 
      if(array_key_exists($option->ID,$saved)) 
       $saved[$option->ID]=(object)array('status'=>true,'count'=>1,'price'=>$option->UnitPrice,'attributes'=>'','groupid'=>$option->OptionGroupID,'subgroupid'=>$option->Sub_OptionGroupID,'desc'=>$option->OptionLongDesc,'id'=>$option->ID); 
     } 
    } 

をしかし、誰effect.Iもこの

$optid=(string)$option->ID; // now this shoud string but no effect 
        $saved[$optid]=(object)array('status'=>true,'count'=>1,'price'=>$option->UnitPrice,'attributes'=>'','groupid'=>$option->OptionGroupID,'subgroupid'=>$option->Sub_OptionGroupID,'desc'=>$option->OptionLongDesc,'id'=>$option->ID); 

I type.Likeデータを変更しようとしたんこれは、保存された配列のキーが文字列であり、新しいキーが数字であるという問題が原因であることがわかります。どのように私はそれらを同じタイプに変換することができます。

ありがとうございます。

+0

のですか? – MKD

+0

最後のコメントで申し訳ありません、 'array_unique()'です。 –

+0

[配列内の重複するキーを削除する方法](https://stackoverflow.com/questions/7550826/how-to-remove-duplicate-keys-in-array) –

答えて

0

私はこれを行っていますが、これを行う正しい方法であるかどうかはわかりません。より良い方法があれば、あなたの提案をしてください。 私はデータ型を変更し、新しい配列を作成しました。そして重複した値を削除します。

$newsaved=array(); 
foreach($saved as $key=>$value){ 
    $stroptid=(string)$key; 
    $newsaved[$stroptid]=$value; 
} 

さて、これはそれがkeys.Noを削除します出力

Array 
(
    [1811258] => stdClass Object 
     (
      [status] => 1 
      [count] => 1 
      [price] => 2501 
      [attributes] => 
      [groupid] => 2400 
      [subgroupid] => bux_364905 
      [desc] => GE Refrigerator - Side by Side GC5SHEXNQ.. 
      [id] => 1811258 
     ) 

    [1812193] => stdClass Object 
     (
      [status] => 1 
      [count] => 1 
      [price] => 293 
      [attributes] => 
      [groupid] => 2410 
      [subgroupid] => 0 
      [desc] => STAINLESS STEEL DOUBLE BOWL - 20 GAUGE 
      [id] => 1812193 
     ) 

    [1852936] => stdClass Object 
     (
      [status] => 1 
      [count] => 1 
      [price] => 525 
      [attributes] => 
      [groupid] => 2489 
      [subgroupid] => 0 
      [desc] => 
      [id] => 1852936 
     ) 

) 
+0

質問のコメントに投稿したJSONに、見えない文字が含まれていて無効です。どのようにあなたがそれを解読することができたのだろうか。 'json_decode()'は私のためにそれを解読するのを拒否します:https://3v4l.org/cg5WC – axiac

関連する問題