Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将二维关联jquery数组转换为php数组_Php_Jquery_Json_Associative Array - Fatal编程技术网

将二维关联jquery数组转换为php数组

将二维关联jquery数组转换为php数组,php,jquery,json,associative-array,Php,Jquery,Json,Associative Array,我在将我在jQuery中创建的关联数组转换为可以在PHP中访问和使用的数组时遇到问题 我使用以下方法构建关联数组: 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." + $(

我在将我在jQuery中创建的关联数组转换为可以在PHP中访问和使用的数组时遇到问题

我使用以下方法构建关联数组:

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");
    }));
});
基本上,上面的代码应该返回以下形式的内容:

colors = {
    "{{ color_entry_id }}": [array of string rgb values]
}
然后,我将其发送到我的PHP脚本中,其中包含以下内容:

$.post(
     "test.php",
     { "edit_colors": JSON.stringify(colors) },
    ...
);
在我的PHP中,我希望能够获取与{{color\u entry\u 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\u entry\u id}和图像链接$check_colors是一个PHP硬编码的rgb值与人类可读颜色的关联数组。我的问题是链接:

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

抛出一个“致命错误:无法将类型stdClass用作数组”,因为$colors[$color\u entry]并没有成为我想要的二维数组。所以有人知道我做错了什么,以及我如何让这个二维数组在我的PHP代码中循环吗?

错误正是它所说的:不能将对象用作数组。当您使用json_解码时,它默认为一个对象。您需要它是一个关联数组

因此,将其更改为:

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

现在,您可以根据需要遍历$colors。

错误正是它所说的:您不能将对象用作数组。当您使用json_解码时,它默认为一个对象。您需要它是一个关联数组

因此,将其更改为:

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

现在,您可以根据需要遍历$colors。

哇,我甚至没有看到文档的这一部分。谢谢你指出这一点。哇,我甚至没有看到文档的那一部分。谢谢你指出这一点。