我有一个数组:
Array (
[0] => stdClass Object (
[user_id] => 1
[ID] => 1
[user_login] => admin
[display_name] => admin
[user_email] => webbinformation@nacka.se
[meta_value] => a:1:{s:13:\"administrator\";s:1:\"1\";}
)
[1] => stdClass Object (
[user_id] => 4
[ID] => 4
[user_login] => ungtinflytande
[display_name] => ungtinflytande
[user_email] => klarakviberg@gmail.com
[meta_value] => a:1:{s:13:\"administrator\";s:1:\"1\";}
)
[2] => stdClass Object (
[user_id] => 5
[ID] => 5
[user_login] => inflytandepilot
[display_name] => inflytandepilot
[user_email] => hildalundgren@hotmail.com
[meta_value] => a:1:{s:6:\"author\";s:1:\"1\";}
)
[3] => stdClass Object ( …
Run Code Online (Sandbox Code Playgroud) 我有一个用途ksort()
,我需要选择排序顺序(ASC/DESC).
有没有办法做到这一点 array_multisort()
<?php
$a = array(
'a'=>'7833',
'd'=>'1297',
'c'=>'341',
'1'=>'67',
'b'=>'225',
'3'=>'24',
'2'=>'44',
'4'=>'22',
'0'=>'84'
);
ksort($a);
print_r($a);
Run Code Online (Sandbox Code Playgroud)
上面的代码产生以下输出.
Array
(
[0] => 84
[a] => 7833
[b] => 225
[c] => 341
[d] => 1297
[1] => 67
[2] => 44
[3] => 24
[4] => 22
)
Run Code Online (Sandbox Code Playgroud)
为什么ksort会给出错误的结果?
我试图按照以下数据结构中的列进行排序:
$counter = 1;
$entity_list = array();
foreach($result as $rec){
$entity_list[$counter]['student_first_name'] = $rec->firstname;
$entity_list[$counter]['student_last_name'] = $rec->lastname;
$entity_list[$counter]['course_name'] = $rec->fullname;
.
.
$counter++;
}//end foreach
Run Code Online (Sandbox Code Playgroud)
这是$ entity_list数据结构的var_dump.
array (size=150)
1 =>
array (size=3)
'student_first_name' => string 'Jane' (length=6)
'student_last_name' => string 'Smith' (length=7)
'course_name' => string 'Algebra 1A-MOD' (length=14)
2 =>
array (size=3)
'student_first_name' => string 'Fred' (length=6)
'student_last_name' => string 'Jones' (length=7)
'course_name' => string 'Algebra 1A-MOD' (length=14)
.
.
.
Run Code Online (Sandbox Code Playgroud)
如何在此结构上使用asort()或ksort()?我想我应该使用ksort(),因为它适用于密钥.我曾尝试过ksort($ entity_list,'student_last_name')或asort($ entity_list,'current_grade').
谢谢.
我想以数字方式对数组进行排序,即188,188-1,188-2,222,222-1,222,-2等.这就是数组当前的样子:
[188-1] => Array
(
[time] => 1
)
[188-2] => Array
(
[time] => 2
)
[188-3] => Array
(
[time] => 3
)
[188] => Array
(
[notes] => frog stand notes
)
[489] => Array
(
[notes] => notes
)
[489-1] => Array
(
[weight] => 10
[reps] => 30
)
[489-2] => Array
(
[weight] => 20
[reps] => 30
)
[489-3] => Array
(
[weight] => 30
[reps] => 30
)
[492-1] => Array
( …
Run Code Online (Sandbox Code Playgroud) 这是我的角色模型的一部分:
namespace App;
use App\Traits\Permissions;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
use Permissions;
/**
* {@inheritDoc}
*/
protected $casts = [
'permissions' => 'array',
];
}
Run Code Online (Sandbox Code Playgroud)
这是我的权限特性:
namespace App\Traits;
trait Permissions
{
public function setPermissionsAttribute($permissions)
{
ksort($permissions);
$this->attributes['permissions'] = $permissions;
}
/**
* Adds a permission.
*
* @param string $permission
* @param bool $value
* @return void
*/
public function addPermission($permission, $value = true)
{
if (!array_key_exists($permission, $this->getAttribute('permissions'))) {
$this->setAttribute('permissions', array_merge($this->getAttribute('permissions'), [$permission => $value]));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将引发以下异常: …
我从没想过我会问这个...我需要一种方法来模仿PHP ksort
在C#中的功能.
这是问题...... PHP这样做......
PHP代码
$arr = array(
"tagValues" => "asdfasd",
"email" => "asdfasd",
"referrer" => "asdfasd",
"tags" => "asdfasd",
);
echo "Base array \n\n";
print_r($arr);
ksort($arr);
echo "\n\nksort'ed array \n\n";
print_r($arr);
Run Code Online (Sandbox Code Playgroud)
PHP输出
Base array
Array
(
[tagValues] => asdfasd
[email] => asdfasd
[referrer] => asdfasd
[tags] => asdfasd
)
ksort'ed array
Array
(
[email] => asdfasd
[referrer] => asdfasd
[tagValues] => asdfasd
[tags] => asdfasd
)
Run Code Online (Sandbox Code Playgroud)
如果我在C#中这样做...
string[] sortedKeys = form.AllKeys.OrderBy(x => x).ToArray();
Run Code Online (Sandbox Code Playgroud)
它以不同的顺序出现.tags
将在以前tagValues
,因为它应该是正确的.这是真正的字母顺序. …
我正在使用WordPress中的自定义过滤器,只需要按相反的顺序帮助排序这个数组:
add_filter('relevanssi_hits_filter', 'order_the_results');
function order_the_results($hits) {
global $wp_query;
if ($wp_query->query_vars['orderby'] == 'likes') {
$likes = array();
foreach ($hits[0] as $hit) {
$likecount = get_post_meta($hit->ID, '_likes', true);
if (!isset($likes[$likecount])) $likes[$likecount] = array();
array_push($likes[$likecount], $hit);
}
ksort($likes);
$sorted_hits = array();
foreach ($likes as $likecount => $year_hits) {
$sorted_hits = array_merge($sorted_hits, $year_hits);
}
$hits[0] = $sorted_hits;
}
return $hits;
}
Run Code Online (Sandbox Code Playgroud)
我对ksort不太熟悉,但似乎没有ASC/DESC选项.
我有一个问题所以我有这个数组:
Array
(
[2016] => Array
(
[23] => Array
(
[total_auctions] => 0
[total_price] => 0
)
[22] => Array
(
[total_auctions] => 0
[total_price] => 0
)
[21] => Array
(
[total_auctions] => 0
[total_price] => 0
)
[20] => Array
(
[total_auctions] => 0
[total_price] => 0
)
)
Run Code Online (Sandbox Code Playgroud)
我想按键对递归进行排序。所以我创建了方法:
public function sortNestedArrayAssoc($a)
{
if (!is_array($a)) {
return false;
}
ksort($a);
foreach ($a as $k=>$v) {
$this->sortNestedArrayAssoc($a[$k]);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了相同的结果,带有键的数组23
是第一个,我真的不明白问题出在哪里。你能帮我吗 ?提前感谢并为我的英语感到抱歉
我有一个关联的格式数组
[Article_title_1] => Array
(
[description] => Trial
[created] => date
)
[Article_title_2] => Array
(
[description] => Trial
[created] => date
)
Run Code Online (Sandbox Code Playgroud)
我想按字母顺序(按标题)对数组进行排序,其中Article_title_2是文章的标题.
我试过ksort.这是行不通的.我试图使用cakephp的设置排序,也无法让它工作.
我感谢任何帮助.
谢谢.
我正在尝试按键对数组(同时包含字母和数字键)进行排序,其中字母键将按字母顺序排列在前,然后按数字键排列。
尝试了ksort
所有可用的标志,但这没有帮助。尝试了几个SO答案,但没有一个达到我的目的。这是我拥有的数组的示例..
$array = array(
'Bat' => array(),
'Dog' => array(),
'Apple' => array(),
'Cat' => array(),
1 => array(),
3 => array(),
2 => array(),
4 => array()
);
Run Code Online (Sandbox Code Playgroud)
我需要这样排序:
$array = array(
'Apple' => array(),
'Bat' => array(),
'Cat' => array(),
'Dog' => array(),
0 => array(),
1 => array(),
2 => array(),
3 => array()
);
Run Code Online (Sandbox Code Playgroud)
我从 SO 答案中了解到,它可能需要一个自定义函数来使用该usort
函数进行排序。这就是我迷失的地方。任何有关正确方向的帮助或指导将不胜感激。
谢谢
echo '<pre>'.print_r($listings,1).'</pre>';
ksort($listings, SORT_NUMERIC);
echo '<pre>'.print_r($listings,1).'</pre>';
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[quick-brown-fox] => Array
(
[0] => Quick-brown-fox
[1] => quick-brown-fox
[4] => general_thumbs/quick-brown-fox.jpg
[2] => 320
[3] => 240
)
)
Array
(
[quick-brown-fox] => Array
(
[0] => Quick-brown-fox
[1] => quick-brown-fox
[4] => general_thumbs/quick-brown-fox.jpg
[2] => 320
[3] => 240
)
)
Run Code Online (Sandbox Code Playgroud)
我试过了foreach
,但是它不会影响原始数组,for
也不会起作用,因为它是键,而不是索引。在这种情况下我该怎么办?