首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP my_asort()和my_ksort()

PHP my_asort()和my_ksort()
EN

Stack Overflow用户
提问于 2015-03-20 15:35:36
回答 4查看 222关注 0票数 1

我正在处理这个在php中排序的问题。我必须编写自己的排序函数,使用my_asort()和my_ksort()函数,它们分别执行与asort和ksort完全相同的操作。但是,我无法获得正确的输出(我是对php的新手),因此,任何帮助如何纠正这一点,将是非常感谢的。

这是我输入的代码:

代码语言:javascript
复制
<?php


echo "Original Array<br><br>";
$member = array("Jack" => "55kg", "Bill" => "35kg", "Aaron" => "60kg", "Daniel" => "80kg" );



foreach ($member as $user => $weight) {
echo "$user = $weight <br>";
}

echo "<br><br>";

function my_asort($member)
    {
    $keys=array_keys($member);
    sort($keys);
    foreach($keys as $key)
        {
        $val=$member[$key];
        unset($member[$key]);
        $member[$key]=$val;
        }
    }

echo "Sorted By user <br><br>";
foreach ($member as $user => $weight) {
echo "$user = $weight <br>";
}

echo "<br><br>";

function my_ksort($member)
    {
    $keys=array_keys($member);
    sort($keys);
    foreach($keys as $key)
        {
        $val=$member[$key];
        unset($member[$key]);
        $member[$key]=$val;
        }
    }

echo "Sorted By weight <br><br>";
foreach ($member as $user => $weight) {
echo "$user = $weight <br>";
}

?>

这就是它显示的内容:(它不做任何排序,我做错了什么?)

代码语言:javascript
复制
Original Array

Jack = 55kg 
Bill = 35kg 
Aaron = 60kg 
Daniel = 80kg 


Sorted By user 

Jack = 55kg 
Bill = 35kg 
Aaron = 60kg 
Daniel = 80kg 

Sorted By weight 

Jack = 55kg 
Bill = 35kg 
Aaron = 60kg 
Daniel = 80kg
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-20 15:45:57

您需要调用您的函数(或者使用没有函数声明的代码)。你只是在你的代码中定义了它们。

因此,如果您想使用它们,您需要调用它们,您的代码如下所示:

代码语言:javascript
复制
<?php

function my_ksort(&$member)
{
  $keys=array_keys($member);
  sort($keys);
  foreach($keys as $key)
  {
    $val=$member[$key];
    unset($member[$key]);
    $member[$key]=$val;
  }
}

function my_asort(&$member)
{
  $keys=array_keys($member);
  sort($keys);
  foreach($keys as $key)
  {
    $val=$member[$key];
    unset($member[$key]);
    $member[$key]=$val;
  }
}    

echo "Original Array<br><br>";
$member = array("Jack" => "55kg", "Bill" => "35kg", "Aaron" => "60kg", "Daniel" => "80kg" );
foreach ($member as $user => $weight) { 
  echo "$user = $weight <br>";
}

echo "<br><br>";

my_asort($member);
echo "Sorted By user <br><br>";
foreach ($member as $user => $weight) {
  echo "$user = $weight <br>";
}

echo "<br><br>";

my_ksort($member);
echo "Sorted By weight <br><br>";
foreach ($member as $user => $weight) {
  echo "$user = $weight <br>";
}
票数 0
EN

Stack Overflow用户

发布于 2015-03-20 15:42:37

两个问题:

您没有使用您创建的函数:

代码语言:javascript
复制
my_asort($member);
my_ksort($member);

而且您必须在参数中对数组添加一个引用(&),因为除了修改数组之外,什么都不返回:

代码语言:javascript
复制
function my_asort(&$member)
function my_ksort(&$member)

(我没有检查结果是否与实际的asortksort函数相对应,但由于它看起来像是学校的作业,我相信您现在已经得到了函数的输出。)

票数 0
EN

Stack Overflow用户

发布于 2015-03-20 15:49:07

代码中的任何地方都没有调用方法。您只是提供了方法定义,但没有调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29170333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档