我在将我在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_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}}和图像链接。 $ check_colors是一个PHP硬编码的rgb值关联数组,用于人类可读的颜色。我的问题是,链接:
in_array($color, $colors[$color_entry])抛出一个“致命错误:不能使用类型stdClass作为数组”,因为$ colors [$ color_entry]不会成为我试图让它成为的二维数组。所以,任何人都知道我在做什么错了,我怎么能得到这个二维数组来循环通过我的PHP代码?