【问题标题】:Function for reverse order of values in an array php用于数组php中值倒序的函数
【发布时间】:2015-06-15 03:57:29
【问题描述】:

我是 PHP 新手,我被要求编写一个函数,该函数接受一个数组作为参数,然后以相反的顺序打印该数组。这是我目前所拥有的:

<?php
  function RevOrder ($arr1) {
    $arr1 == array();
    echo array_reverse($arr1);
  }
  RevOrder (array(1,4,2,5,19,11,28));
?>

它应该输出 28、11、19、5、2、4、1,但我不断收到数组到字符串转换错误。

【问题讨论】:

  • “$arr1 == array();”的意义何在? ?
  • 我的意思是函数的变量/参数应该是一个数组

标签: php function reverse


【解决方案1】:
<?php
function RevOrder (array $arr1) {
    echo implode(", ", array_reverse($arr1));
}
RevOrder (array(1,4,2,5,19,11,28));

但请注意,这不是特别好的设计 - 您的函数应该做一件事。在这种情况下,您应该编写一个函数来根据您的喜好打印一个数组,然后将其传递给反转数组。虽然在这种情况下,我想有一个帮助函数以相反的顺序打印数组是可以的,但是当你做一些更复杂的事情时,你应该考虑这一点。

编辑:

你可以这样做:

function printArray(array $arr){
    echo implode(", ", $arr);
}
printArray(array_reverse($arr));

至于为什么不能只回显数组见this

数组总是被转换为字符串“Array”;因为这, echo 和 print 本身不能显示数组的内容。到 查看单个元素,使用诸如 echo $arr['foo'] 的结构。 有关查看全部内容的提示,请参见下文。

我还为数组添加了type-hints,这样当你传递不是数组的东西时就会出错。

【讨论】:

  • 谢谢,这成功了!你能进一步解释为什么这行得通而我的行不通吗?我试图更好地理解所有这些功能。另外,你将如何编写一个函数来打印一个数组,然后将它作为一个反向数组传递?
  • @AndrewThalackal:我已经编辑了答案以便进一步解释。
【解决方案2】:

echo 在传递数组时需要一个字符串,因此数组到字符串的转换错误。看起来您没有正确检查传递的参数是否为数组。试试这个:

<?php
function RevOrder($arr1) {
   if (is_array($arr1)) {
        return array_reverse($arr1);
   }

   return false;
}

$reversedArray = RevOrder(array(1,4,2,5,19,11,28));

// Option 1
print_r($reversedArray);

// Option 2
echo(implode(', ', $reversedArray));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多