Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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数组的一个值排序来对其排序_Php_Sorting_Loops_For Loop - Fatal编程技术网

通过对php数组的一个值排序来对其排序

通过对php数组的一个值排序来对其排序,php,sorting,loops,for-loop,Php,Sorting,Loops,For Loop,我有一个项目的数组,我想排序多少喜欢每个项目有最高的第一 我试着为每件商品订购喜欢的商品,但按照我的方式,与原始商品没有更多的关联 以下是我所做的: $max = $feed->get_item_quantity(); //max number of items in the array $orderedLike; for($i = 0; $i < $max; $i++ ) { $item[$i] = $feed->get_item($i); //gets single

我有一个项目的数组,我想排序多少喜欢每个项目有最高的第一

我试着为每件商品订购喜欢的商品,但按照我的方式,与原始商品没有更多的关联

以下是我所做的:

$max = $feed->get_item_quantity(); //max number of items in the array
$orderedLike;
for($i = 0; $i < $max; $i++ )
{
    $item[$i] = $feed->get_item($i); //gets single items
    $orderedLike[$i] = $item[$i]->get_like_count(); //gets number of likes for each item
}
arsort($orderedLike); //sorts the number of likes
echo '<pre>';
    foreach ( $orderedLike as $like )
    {
        echo $like . ' '; //displays the likes
    }
echo '</pre>';
$max=$feed->get_item_quantity()//数组中的最大项数
$orderedLike;
对于($i=0;$i<$max;$i++)
{
$item[$i]=$feed->get_item($i);//获取单个项目
$orderedLike[$i]=$item[$i]>get_like_count();//获取每个项目的喜欢数
}
arsort($orderedLike)//对喜欢的数量进行排序
回声';
foreach($orderedLike作为$like)
{
echo$like.';//显示like
}
回声';
这是可行的,但后来我意识到我不能再对原始的项目数组进行排序了,因为有两个数组。一个有喜欢的数量,一个有项目和价值(包括喜欢的数量)

我最终试图通过like值进入顺序的数组是
$item

我不太清楚如何做到这一点。

您可以使用:

foreach ( $orderedLike as $key => $val )
{
    echo $item[$key]. ' '; //displays the likes
}
您可以为此使用:

foreach ( $orderedLike as $key => $val )
{
    echo $item[$key]. ' '; //displays the likes
}

事实上你已经不远了。您可以使用
foreach($arr as$key=>$val)
来执行此操作:

// I never say this initialized.
$item = array();
// create only one array
for($i = 0; $i < $max; $i++ )
{
    // let PHP handle indexing.
    $item[] = $feed->get_item($i); //gets single items
}    
usort( $item, 'sort_by_like_count' );
// item is now sorted by get_like_count

function sort_by_like_count( $a, $b )
{
    $a = $a->get_like_count();
    $b = $b->get_like_count();
    // you can do return $a - $b here as a shortcut. I prefer being explicit as
    // 1, 0, -1 is expected more universally.
    if( $a == $b ) return 0;
    return ( $a > $b )? 1: -1;
}
但也许你最好是:

//我从来没有说过这个。
$item=array();
//只创建一个数组
对于($i=0;$i<$max;$i++)
{
//让PHP处理索引。
$item[]=$feed->get_item($i);//获取单个项目
}    
usort($item,'sort_by_like_count');
//项目现在按get_like_计数排序
函数按类计数排序($a,$b)
{
$a=$a->get_like_count();
$b=$b->get_like_count();
//您可以在这里返回$a-$b作为快捷方式。我更喜欢显式返回
//1,0,-1更普遍。
如果($a==$b)返回0;
回报($a>$b)?1:-1;
}

事实上你已经不远了。您可以使用
foreach($arr as$key=>$val)
来执行此操作:

// I never say this initialized.
$item = array();
// create only one array
for($i = 0; $i < $max; $i++ )
{
    // let PHP handle indexing.
    $item[] = $feed->get_item($i); //gets single items
}    
usort( $item, 'sort_by_like_count' );
// item is now sorted by get_like_count

function sort_by_like_count( $a, $b )
{
    $a = $a->get_like_count();
    $b = $b->get_like_count();
    // you can do return $a - $b here as a shortcut. I prefer being explicit as
    // 1, 0, -1 is expected more universally.
    if( $a == $b ) return 0;
    return ( $a > $b )? 1: -1;
}
但也许你最好是:

//我从来没有说过这个。
$item=array();
//只创建一个数组
对于($i=0;$i<$max;$i++)
{
//让PHP处理索引。
$item[]=$feed->get_item($i);//获取单个项目
}    
usort($item,'sort_by_like_count');
//项目现在按get_like_计数排序
函数按类计数排序($a,$b)
{
$a=$a->get_like_count();
$b=$b->get_like_count();
//您可以在这里返回$a-$b作为快捷方式。我更喜欢显式返回
//1,0,-1更普遍。
如果($a==$b)返回0;
回报($a>$b)?1:-1;
}

如果需要,也可以使用array\u multisort()函数…..如果需要,也可以使用array\u multisort()函数…..如何将数组的顺序从最高顺序反转到最低顺序?@Nils我编辑了我的帖子以反转顺序。只是需要在比较函数中交换
$a
$b
,这样它们的顺序就相反了。你如何将数组的顺序从最高到最低颠倒过来?@Nils我编辑了我的帖子,以颠倒顺序。只需在比较函数中交换
$a
$b
,使它们的顺序相反。如何将数组的顺序从高到低颠倒过来?这是从最低到最高的setup@NilsR这与将返回值更改为
return($a<$b)一样简单吗?1: -1;如何将数组的顺序从高到低颠倒?这是从最低到最高的setup@NilsR这与将返回值更改为
return($a<$b)一样简单吗?1: -1;