2012-05-08 17 views
1

私がjQueryで作成した連想配列をPHPでアクセスして使用することに問題があります。私は、その後で私のPHPスクリプトに送信2次元連想jquery配列をPHP配列に変換する

colors = { 
    "{{ color_entry_id }}": [array of string rgb values] 
} 

var colors = {}; 
$(this).find('input[name="color_id"]').each(function() { 
    var color_entry_id = $(this).val(); 
    colors[color_entry_id] = jQuery.makeArray($(this).siblings(".colors." + $(this).val()).find(".img_color a.selected").map(function() { 
     return $(this).css("background-color"); 
    })); 
}); 

基本的には、上記のコードは、フォームの何かを返す必要があります:私は連想配列を構築するために、次を使用し

以下:

$.post(
    "test.php", 
    { "edit_colors": JSON.stringify(colors) }, 
    ... 
); 

私のPHPでは、 {color_entry_id}}を呼び出し、更新クエリで使用する値をループします。以下は私のPHPコードである:上記のコードで

$check_colors = array(
    "rgb(204, 51, 51)" => "red", 
    "rgb(102, 153, 204)" => "sky_blue", 
    "rgb(0, 204, 51)" => "lime_green", 
    "rgb(0, 102, 0)" => "dark_green", 
    "rgb(153, 0, 0)" => "burgandy", 
    "rgb(255, 102, 51)" => "orange", 
    ... 
); 

$colors = json_decode($_POST['edit_colors']); 

foreach($images as $color_entry => $image_link) { 
    $update_color_query = "UPDATE color SET "; 
    foreach(array_keys($check_colors) as $color) { 
     if(in_array($color, $colors[$color_entry])) { 
      $update_color_query .= $check_colors[$color] . "=1, "; 
     } else { 
      $update_color_query .= $check_colors[$color] . "=0, "; 
     } 
    } 
    $update_color_query .= "image_url='$image_link' WHERE id=$color_entry"; 
    mysql_query($update_color_query); 
} 

、画像だけでなく、{{}} color_entry_id Sと画像リンクを対応する別の配列です。 $ check_colorsは人間が読める色に対するrgb値のPHPハードコーディングされた連想配列です。

in_array($color, $colors[$color_entry]) 

「致命的なエラー:配列としてのタイプはstdClassを使用することはできません」スロー:$色[$のcolor_entry]私はそれがために取得しようとしている2次元配列になってきていないので、私の問題は、リンクがあることです。だから誰も私が間違ってやっていることを知っていると私はこの二次元配列を私のPHPコードでループすることができますか?

答えて

1

エラーはまさにそれが言うことです:あなたはARRAYとしてOBJECTを使うことはできません。 json_decodeを使用すると、デフォルトでオブジェクトになります。連想配列である必要があります。

だから、このように変更します。あなたが必要として今

$colors = json_decode($_POST['edit_colors'], true); 

、あなたは$色を反復処理することができます。

+0

うわー、私はドキュメントのその部分を見ていませんでした。それを指摘してくれてありがとう。 – jrubins