Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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
Php 如何在Javascript中使用自定义索引连接数组项?_Php_Javascript_Arrays_Join - Fatal编程技术网

Php 如何在Javascript中使用自定义索引连接数组项?

Php 如何在Javascript中使用自定义索引连接数组项?,php,javascript,arrays,join,Php,Javascript,Arrays,Join,我有一个javascript数组,需要加入并通过URL发送到PHP,如下所示: var objects = []; objects.splice("red",0,"apple"); objects.splice("yellow",0,"banana"); objects.splice("purple",0,"grape"); var string = objects.join("+"); $("#print_div").load("fruits.php?fruits=" + string)

我有一个javascript数组,需要加入并通过URL发送到PHP,如下所示:

var objects = [];

objects.splice("red",0,"apple");
objects.splice("yellow",0,"banana");
objects.splice("purple",0,"grape");

var string = objects.join("+");

$("#print_div").load("fruits.php?fruits=" + string);
在PHP中,我想接收字符串并将其转换回数组。。。大概是这样的:

$fruits = explode(" ", $_REQUEST['fruits']);

foreach($fruits as $key => $value){
    echo "The " . $value . " is " . $key; 
}
可能是javascript中的连接或拼接无法实现这一点,也可能是php中的爆炸。我不确定,但我需要一个解决方案,能够在javascript中为数组创建自定义索引,然后发送到php,并且仍然能够访问索引和值名称


谢谢你的帮助

如果您在javascript中使用
对象。join(“+”
,那么您应该在PHP中使用
explode(“+”,$\u REQUEST['fruits'])
,尝试使用
push()
将元素添加到数组中。

您可能需要查看哪些元素接受GET字符串并将其解析到数组中,键入和所有内容。

您使用的
splice
错误。检查一下。 您可以像下面这样将数据传递给方法,这非常简单

var data = {
    "red": "apple",
    "yellow": "banana",
    "purple": "grape"
};
$("#print_div").load("fruits.php", data);
在php中:

foreach($_GET as $key => $value){
    echo "The " . $value . " is " . $key; 
}    

假设这是您的对象:

var fruits = {
  red: "apple",
  yellow: "banana",
  purple: "grape"
};
像这样将其传递给php:()

像这样使用它:

$fruits = $_REQUEST['fruits'];

foreach($fruits as $key => $value){
    echo "The " . $value . " is " . $key; 
}

即使您没有更改原始代码中的其他内容,这一行

$("#print_div").load("fruits.php?fruits=string");
应该是

$("#print_div").load("fruits.php?fruits="+string);

因此,
objects.splice(“红色”,0,“苹果”)的结果到底是什么?数组仅适用于数字标记。如果需要字符串标记,则必须使用对象(可能与数组一起使用,以保持顺序)并实现自己的
splice
join
方法。在url中传递内容时要小心-它们有长度限制,超过这些限制将自动截断url,导致数据丢失/损坏。javascript(和大多数语言)不允许自定义索引。这实际上是不正确的!请尝试发送带有空格的字符串。空格总是转换为“+”,但PHP仍会将它们识别为空白。@Amberlamps请解释then@Amberlamps这是真的,但是如果你加入一个带有+的数组,它将不会在phphone中转换回空白。我已经有一段时间没有使用过PHP了,但据我所知,当你调用像
script.PHP?string=this+is+a+test
和prom这样的脚本时在PHP脚本中没有进一步处理请求参数,它不是在没有“+”s的情况下编写“这是一个测试”吗?@slash197 PHP将“+”转换为空白,这就是为什么我有
explode(“,$\u请求['fruits'))
。我已经运行了它,并且它的工作没有任何问题。我认为我的问题是javascript不允许数组具有字符串索引,因此连接忽略自定义索引,PHP将在explode时分配数字索引。如果加载时要传递多个参数,这会起作用吗?@amlane86是的,没有限制。不需要json_解码sary,load方法会将数据转换为参数。谢谢!这是一个输入错误。现已修复。
$("#print_div").load("fruits.php?fruits="+string);