【问题标题】:PHP function that accepts a JSON encoded array [closed]接受 JSON 编码数组的 PHP 函数 [关闭]
【发布时间】:2016-07-05 22:40:39
【问题描述】:

我正在解决一些数学矩阵问题,我想到了编写接受 JSON 编码数组的 PHP 函数,并且:

1) 按升序对给定矩阵(二维数组)的第一行进行排序。在排序过程中,其他行应该像粘在第一行一样移动(排序第一行时移动所有列)。

2) 找出已排序二维数组中除第一行以外的最大数。然后计算最大数的坐标之和(坐标从[1, 1]开始)。

-- 第一行只用于排序,不用于计算

-- 如果最大数存在多于一行,则该最大数的所有坐标都必须加到总和中)

矩阵(二维数组)示例为:

6 3 9

9 1 6

4 7 9

示例的解决方案如下:

6 3 9 => 3 6 9 => 3 6 9

9 1 6 => 1 9 6 => 1 9 6 => 9 (2, 2) 和 9 (3, 3) => (2 + 2) + (3 + 3 ) => 10

4 7 9 => 7 4 9 => 7 4 9

但是,目前我是 PHP 初学者,这样的代码超出了我的技能,所以我需要一些帮助。

第一部分是PHP数组,但是如何用坐标作为索引的值来编写这样的数组。如您所见,我被困在问题的开头!

【问题讨论】:

  • 就像它说的:创建一个接受JSON编码数组的PHP函数,将第一行按升序排序,第二行和第三行在第一行的列之后,然后计算最大数字坐标的总和.

标签: php arrays json sorting


【解决方案1】:

要将第一行的排序映射到其余行,可以先用asort独立排序,保持键关联:

$input = [      // or for PHP < 5.4: $input = array(
    [6,3,9],    //                       array(6,3,9),            
    [9,1,6],    //                       array(9,1,6),
    [4,7,9]     //                       array(4,7,9)
];              //                    );

$sort_keys = $input[0];
asort($sort_keys);

然后usearray_map 中的排序数组返回输入数组的排序版本。

$sorted = array_map(function($row) use ($sort_keys){
    foreach ($sort_keys as $key => $value) {
        $result[] = $row[$key];
    }
    return $result;
}, $input);

【讨论】:

  • 每当我尝试回显 $result 时,都会出现致命错误。
  • $result 是一个数组,因此您不应该回显它,但这应该只会给您一个Notice: array to string conversion,而不是致命错误。致命错误可能是因为您的 PHP 版本太旧并且不支持short array syntax。请记住,这只是为了解决您所说的卡住的问题的第一部分。
  • 我试着做剩下的工作,但主要是我不知道的想法t know how to implement in code, so if you can help me with the rest, I将不胜感激!我想当我尝试回显时它会输出已经排序的数组。
  • 当我写echo $input; 时它给了我Notice: array to string conversion,但我也尝试使用此代码echo $result[];,然后它给了我致命错误。我有 PHP 版本 5.5.35 / 5.6.21 / 7.0.6,使用 XAMPP。我还在学习 PHP 的基础知识,我意识到这个想法超出了我目前的编程知识范围,但这是向某人学习的好方法。
  • 哦,是的,echo $result[]; 肯定会出现致命错误。如果要查看排序前后数组的内容,可以使用var_dumpprint_rHere is a link to a working example.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2013-03-29
相关资源
最近更新 更多