如何在PHP中将NSArray传递给索引数组


How can I pass NSArray to indexed arrays in PHP?

我在Xcode中有一个简单的NSArray,我想将其传递到PHP文件并将其用作循环。我该怎么做?

例如,我的NSArray看起来像这样:

    NSArray *array = [NSArray arrayWithObjects: @"hello", @"hi", @"how are you", nil];

到目前为止我做了什么,但没有成功

    NSArray *array = [NSArray arrayWithObjects:@"hello", @"hi", @"how are you?", nil];
NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array
                                                       options:NSJSONWritingPrettyPrinted error:&error];
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    NSString *postString = [NSString stringWithFormat:@"array=%@", array];
    NSData* data = [postString dataUsingEncoding:NSUTF8StringEncoding];
    NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate:self delegateQueue: [NSOperationQueue mainQueue]];
    NSURL* url = [NSURL URLWithString:@"http://url.com/file.php"];
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url
                                                              cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                          timeoutInterval:60.0];
    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setHTTPBody:data];
    __block NSString *resultString;
    NSURLSessionDataTask* dataTask = [defaultSession dataTaskWithRequest:urlRequest
                                                       completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                           if(error == nil)
                                                           {
                                                               resultString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
                                                               NSLog(@"Data: %@",resultString);
                                                           }

                                                       }];
    [dataTask resume];

我的PHP。我在这里学习了教程

    $array = array();
    $array = $_POST['array'];
    $arrlength = count($array);
    for ($i=1; $i <= $arrlength; $i++)
    {
        //do something
    }

我试着回显$array,但它是空的。我对Objective-c有所了解,但对PHP知之甚少。我的代码可以$_POST NSStrings,但我仍然不知道如何使用NSArray来实现这一点。

如果有人能给我一些指导,或者给我一些教程链接的链接,那将是伟大的。我试过在stackoverflow和谷歌上搜索如何做到这一点,但我根本无法理解。

所以我的问题很简单。如何在PHP中将NSArray转换为索引数组?

因此,使用您所拥有的和其他问题来改变这一点:

NSString *postString = [NSString stringWithFormat:@"array=%@", array];

收件人:

NSMutableString *postString = [NSMutableString alloc]
for (NSString *thing in array) {
    [postString appendFormat:@"array[]=%@&",[thing stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}

这将为您提供所需的post字符串。

您不只是将JSON放在HTTP主体中。您应该根据RFC 2616发送正确的POST HTTP格式。您可以查看JWURLConnection类是如何做到这一点的。

编辑你基本上是这样做的:

array=$_json_string;

或者你用PHP把它红成这样:

$post = file_get_contents("php://input");
$json_object = json_decode($post, true);