PHP多维数组翻转值

3

我需要将array中的values顺序反转:

// My current array looks like this
// echo json_encode($array);

    { "t" : [ 1, 2, 3, 4, 5, 6 ],
      "o" : [ 1.1, 2.2, 3.3, 4.4, 5.5, 6.6 ],
      "h" : [ 1.2, 2.2, 3.2, 4.2, 5.2, 6.2 ]
     }

我需要反转`values`,但保留原有的`keys`,结果应该像这样:

// echo json_encode($newArray);

    { "t" : [6, 5, 4, 3, 2, 1 ],
      "o" : [ 6.6, 5.5, 4.4, 3.3, 2.2, 1.1],
      "h" : [ 6.2, 5.2, 4.2, 3.2, 2.2, 1.2 ]
     }

我尝试过但未成功的方法:

<?php
$newArray= array_reverse($array, true);
echo json_encode($newArray);
/* The above code output (Note that the values keep order):
  {
    "h":[1.2, 2.2, 3.2, 4.2, 5.2, 6.2]
    "o":[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]
    "t":[1,2,3,4,5,6]
   }       

*/
 ?>

在这里阅读了类似的问题后,我也尝试了以下方法,但没有成功:

<?php
$k = array_keys($array);

$v = array_values($array);

$rv = array_reverse($v);

$newArray = array_combine($k, $rv);

echo json_encode($b);

/* The above code change association of values = keys, output:
  { "h": [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
    "o": [1,2,3,4,5,6],
    "t": [1.2, 2.2, 3.2, 4.2, 5.2, 6.2]
  }
  ?>

非常感谢您抽出时间。
2个回答

1
尚未测试,但应该可以做到:

$newArray = array();
foreach($array as $key => $val) {
    $newArray[$key] = array_reverse($val);
}

0
假设$json是包含您的输入的变量,
{"t":[1,2,3,4,5,6],"o":[1.1,2.2,3.3,4.4,5.5,6.6],"h":[1.2,2.2,3.2,4.2,5.2,6.2]}

考虑以下代码片段:

$json = json_decode($json);

$json = array_map('array_reverse', get_object_vars($json));

$json = json_encode($json);

现在,$json 包含以下内容,
{"t":[6,5,4,3,2,1],"o":[6.6,5.5,4.4,3.3,2.2,1.1],"h":[6.2,5.2,4.2,3.2,2.2,1.2]}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接