通过POST将NSMutableArray传递给PHP

通过POST将NSMutableArray传递给PHP,php,ios,objective-c,Php,Ios,Objective C,我试图在一个PHPWeb服务的帖子中包含一个数组。它似乎不起作用,我相信这一定是某种格式问题,但我不知道如何格式化它。我有以下iOS post字符串:(我知道如何发布,这不是问题。) “runners”是NSMutableArray,仅以这种方式传递它似乎无法正常工作 我应该如何传递数组?我无法更改PHP,服务需要一个数组。我会向服务传递一个JSON对象,但这是我无法控制的 PHP的功能如下所示: $runners = $_POST["runners"]; 我不清楚PHP希望在该参数中得到什

我试图在一个PHPWeb服务的帖子中包含一个数组。它似乎不起作用,我相信这一定是某种格式问题,但我不知道如何格式化它。我有以下iOS post字符串:(我知道如何发布,这不是问题。)

“runners”是NSMutableArray,仅以这种方式传递它似乎无法正常工作

我应该如何传递数组?我无法更改PHP,服务需要一个数组。我会向服务传递一个JSON对象,但这是我无法控制的

PHP的功能如下所示:

$runners = $_POST["runners"]; 

我不清楚PHP希望在该参数中得到什么

如果PHP希望在
$runners
中找到一个数组,那么您需要发送一个包含此内容的POST查询(至少):

这将由PHP转换为一个数组

{ 'element1', 'element2', ... }
如果你改为发送

runners[key1]=element1&runners[key2]=element2&...
然后,您将在PHP中获得与编写

$runners = array(
     'key1' => 'element1',
     'key2' => 'element2',
      ...
);

JSON与此无关,除非PHP在
$runners
上执行
JSON\u解码。(你没有说过这种情况,所以我想不是这样的)。

伊塞米是对的。要将数组作为post变量传递,需要创建以下格式的url字符串:

http://myserver.com/test.php?myArray[]=123&myArray[]=456
我是如何实现它的:

NSArray *arrayWithIDs = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:123], [NSNumber numberWithInt:456], nil];
NSString *postVarArrayString = @"";
NSString *separator = @"?";
for (int i=0; i<[arrayWithIDs count]; i++) {
    if (i>0) {
        separator = @"&";
    }
    postVarArrayString = [NSString stringWithFormat:@"%@%@myArray[]=%d", postVarArrayString, separator, [[arrayWithIDs objectAtIndex:i] integerValue]];
}

// url
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:
                                   @"http://myserver.com/test.php"
                                   @"%@"
                                   , postVarArrayString]
             ];

NSLog(@"%@", [url absoluteString]);
NSArray*arrayWithIDs=[[NSArray alloc]initWithObjects:[NSNumber numberwhithint:123],[NSNumber numberwhithint:456],nil];
NSString*postVarArrayString=@”;
NSString*分隔符=@“?”;
对于(int i=0;i0){
分隔符=@“&”;
}
postVarArrayString=[NSString stringWithFormat:@“%@%@myArray[]=%d”,postVarArrayString,分隔符,[[arrayWithIDs objectAtIndex:i]integerValue]];
}
//网址
NSURL*url=[NSURL URLWithString:[NSString stringWithFormat:
@"http://myserver.com/test.php"
@"%@"
,postVarArrayString]
];
NSLog(@“%@,[url绝对字符串]);

“该服务需要一个数组:”您需要更具体一些。PHP服务很少期望NSMutableArray的
-description
输出相同类型的数组。服务期望如何对数组进行编码?你说它不是JSON,是XML吗?一些自定义字符串格式?PHP代码只是:$runners=$\u POST[“runners”];为什么不将数组转换为JSON格式或类似的格式?让它变得更好更容易。不,不是。对不起,我想这很混乱。不过,除了数组之外,我并不担心任何东西的格式。我知道其他一切都是正确的。顺便说一句,PHP代码没有打印任何内容。。因此,您不会从该PHP页面获得任何输出。。您应该让某人修改它以添加行
print\r($runners)用于调试。如果我需要使用此内容发布查询,那么Objective-C代码是什么?您需要传递数组吗?看看下面@AbuYusuf的答案(如果它对你有用的话,请向上投票)——更新:看起来好像它在GET中发送数据。请参见POST(JSON)和另一个实现。实际上,您已经提供了基本的想法,并理解了这些东西的工作原理。此外,我还试图实现@AbuYusuf的答案,但不幸的是,它对我不起作用。其他链接是否有用?否则你可以发布另一个问题。如果你这样做了,就给我一个平。
http://myserver.com/test.php?myArray[]=123&myArray[]=456
NSArray *arrayWithIDs = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:123], [NSNumber numberWithInt:456], nil];
NSString *postVarArrayString = @"";
NSString *separator = @"?";
for (int i=0; i<[arrayWithIDs count]; i++) {
    if (i>0) {
        separator = @"&";
    }
    postVarArrayString = [NSString stringWithFormat:@"%@%@myArray[]=%d", postVarArrayString, separator, [[arrayWithIDs objectAtIndex:i] integerValue]];
}

// url
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:
                                   @"http://myserver.com/test.php"
                                   @"%@"
                                   , postVarArrayString]
             ];

NSLog(@"%@", [url absoluteString]);