Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 PayPal循环历史记录转换为特定数组格式_Php_Arrays_Paypal - Fatal编程技术网

Php PayPal循环历史记录转换为特定数组格式

Php PayPal循环历史记录转换为特定数组格式,php,arrays,paypal,Php,Arrays,Paypal,我从贝宝定期档案中获得以下历史记录。请帮我转换成数组。我需要每月验证“P_TRANSTATE”值。很难通过下面的数组进行检查。请建议我或帮助我将数组转换为以下视图 [status] => 1 [result] => Array ( [HTTP/1_1_200_OK ... RESULT] => 0 [RPREF] => RGX51B669592 [PROFILEID] => 0 [P_PNREF

我从贝宝定期档案中获得以下历史记录。请帮我转换成数组。我需要每月验证“P_TRANSTATE”值。很难通过下面的数组进行检查。请建议我或帮助我将数组转换为以下视图

[status] => 1
[result] => Array
    (
        [HTTP/1_1_200_OK ... RESULT] => 0
        [RPREF] => RGX51B669592
        [PROFILEID] => 0
        [P_PNREF1] => BL0PEE6F2E98
        [P_TRANSTIME1] => 25-Aug-17  04:46 AM
        [P_RESULT1] => 0
        [P_TENDER1] => C
        [P_AMT1] => 19.99
        [P_TRANSTATE1] => 8
        [P_PNREF2] => BP0PECB1799B
        [P_TRANSTIME2] => 24-Sep-17  04:58 AM
        [P_RESULT2] => 0
        [P_TENDER2] => C
        [P_AMT2] => 19.99
        [P_TRANSTATE2] => 8            
    );
需要以下格式

1] => Array
    (
        [P_PNREF] => BL0PEE6F2E98
        [P_TRANSTIME] => 25-Aug-17  04:46 AM
        [P_RESULT] => 0
        [P_TENDER] => C
        [P_AMT] => 19.99
        [P_TRANSTATE] => 8


[2] => Array
    (
        [P_PNREF] => BP0PECB1799B
        [P_TRANSTIME] => 24-Sep-17  04:58 AM
        [P_RESULT] => 0
        [P_TENDER] => C
        [P_AMT] => 19.99
        [P_TRANSTATE] => 8  );

您可以这样做,假设$res是paypal阵列响应

<?php
  function convertArray($arr){
  $temp = array();
  $temp[1] = $arr['result'];
  return $temp;
  }
  print_r(convertArray(r$es));
?>

如果我没有误解你的问题,那么这应该对你有用

<?php
$array =  array
    (
    'HTTP/1_1_200_OK ... RESULT' => 0,
    'RPREF' => 'RGX51B669592',
    'PROFILEID' => 'RP0000000040',
    'P_PNREF1' => 'BQ1PECD4AEB8',
    'P_TRANSTIME1' => '25-Aug-17  04:46 AM',
    'P_RESULT1' => 0,
    'P_TENDER1' => 'C',
    'P_AMT1' => 19.99,
    'P_TRANSTATE1' => 8,
    'P_PNREF2' => 'BT1PFFF8A110',
    'P_TRANSTIME2' => '24-Sep-17  04:58 AM',
    'P_RESULT2' => 0,
    'P_TENDER2' => 'C',
    'P_AMT2' => 19.99,
    'P_TRANSTATE2' => 8,            
);

unset($array['HTTP/1_1_200_OK ... RESULT'],$array['RPREF'],$array['PROFILEID']);
$final_array = [];
foreach($array as $key=>$value){
    $index = substr($key, -1);
    $key = substr($key, 0, -1);    
    $final_array[$index][$key] = $value; 
}
print '<pre>';
print_r($final_array);
print '</pre>';
?>
演示:

根据paraluie的注释:您可以使用
preg_match()
在它穿过9后的数字时获取键/索引,因为
substr($key,-1)
substr($key,0,-1)
将无法正常工作。见下文-


对数组所做的更改比所讨论的要多。它应该像数组一样显示:1]=>array([P_PNREF]=>BL0PEE6F2E98[P_TRANSTIME]=>2017年8月25日04:46 AM[P_RESULT]=>0[P_TENDER]=>C[P_AMT]=>19.99[P_TRANSTATE]=>8[2]=>数组([P_PNREF]=>BP0PECB1799B[P_TRANSTIME]=>2017年9月24日04:58上午[P_结果]=>0[P_投标]=>C[P_金额]=>19.99[P_TRANSTATE] => 8@Andreas,StackOverflow提供了编辑问题的工具,这就是我编辑它的原因。我想问得更清楚,以代表我的问题,这就是我编辑我的问题的原因。我对我非常好的问题被否决感到不高兴。@VipulJethva你显然没有抓住重点。这不是关于表或数组的问题。事实上,你已经e在你的问题中根本没有包含任何代码。这里在Meta中阅读:@Andreas你怎么知道我没有在我的问题中添加代码?在上面显示我的数组代码存在问题,这就是为什么我编辑了我的问题3次。这就是问题,要求我们推荐或查找一本书、工具、软件库、教程或其他非现场解决方案urce与堆栈溢出无关,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。我不明白为什么我对这个问题投了反对票?我认为这个问题对开发人员真的很有帮助。这么多开发人员给了我快速的解决方案。奇怪。你能看到答案吗上面的粗体文本?我将为您截取重要部分:到目前为止,我们已经做了哪些工作来解决它。您的问题根本不需要任何努力。您要求我们做您的工作,甚至不首先尝试。@Andreas II已经检查过,从我这边开始,我会尽我最大的努力。正如您看到的用户答案,那么多帮助我的人给出了一个有用的答案。我认为这不是一个减号(向下投票)的问题。完美的解决方案。@VipulJethva很高兴它对您有效。顺便说一句,您可以通过点击勾号接受我的答案:)祝您好运。愉快的编码。@Always当PayPal发回高于“9”的结果时会发生什么?不会
substr($key,-1)
只返回最后一个数字?难道
preg\u match
不是更明智的方法吗?@Parapluie同意,先生,我需要用preg\u match修改我的解决方案以获得数字的最后一部分。@AlwaysSunny很酷。如果你这样做了,那将是一个“选民上限”!
Array
(
    [1] => Array
        (
            [P_PNREF] => BQ1PECD4AEB8
            [P_TRANSTIME] => 25-Aug-17  04:46 AM
            [P_RESULT] => 0
            [P_TENDER] => C
            [P_AMT] => 19.99
            [P_TRANSTATE] => 8
        )

    [2] => Array
        (
            [P_PNREF] => BT1PFFF8A110
            [P_TRANSTIME] => 24-Sep-17  04:58 AM
            [P_RESULT] => 0
            [P_TENDER] => C
            [P_AMT] => 19.99
            [P_TRANSTATE] => 8
        )

)
$re = '/(\D+)(\d+)/';
foreach($array as $key=>$value){
    preg_match($re, $str, $matches);
    $index = $matches[2];
    $key = $matches[1];  
    $final_array[$index][$key] = $value; 
}