[英]PHP Sorting Multidimensional Array Failed
我有這個數組:
Array
(
[0] => Array
(
[id] => 83
[value] => Figures
)
[1] => Array
(
[id] => 85
[value] => Toys
)
[2] => Array
(
[id] => 36
[value] => Nintendo Switch
)
)
而且我有這段代碼根據id
對那個數組進行排序:
function cmp($a, $b) {
return strcmp($a->id, $b->id);
}
while ($row = $result->fetch_assoc()) {
$category = json_decode($row['product_cat'], true);
usort($category, "cmp");
echo '<pre>';
print_r($category);
echo '</pre>';
}
結果無法正常工作,因為id=85
放在id=83
之前:
Array
(
[0] => Array
(
[id] => 36
[value] => Nintendo Switch
)
[1] => Array
(
[id] => 85
[value] => Toys
)
[2] => Array
(
[id] => 83
[value] => Figures
)
)
為什么PHP成功將id=36
放置為數組的第一個值,但未能對id=85
和id=83
進行排序
謝謝。
更改
return strcmp($a->id, $b->id);
至
return strcmp($a['id'], $b['id']);
你可以這樣使用
$mylist = array(array("id"=>83,"value"=>"Figures"),array("id"=>85,"value"=>"Toys"),array("id"=>36,"value"=>"Nintendo Switch"));
echo "<pre>";
$sort = array();
foreach($mylist as $k=>$v) {
$sort['id'][$k] = $v['id'];
$sort['value'][$k] = $v['value'];
}
# sort by event_type desc and then title asc
array_multisort($sort['id'], SORT_ASC, $sort['value'], SORT_ASC,$mylist);
print_r($mylist);
並獲得如下輸出
Array
(
[0] => Array
(
[id] => 36
[value] => Nintendo Switch
)
[1] => Array
(
[id] => 83
[value] => Figures
)
[2] => Array
(
[id] => 85
[value] => Toys
)
)
$category = array ([
'id' => 36,
'value' => 'Nintendo Switch'
], [
'id' => 85,
'value' => 'Toys'
], [
'id' => 83,
'value' => 'Figures'
]);
$sortArry = [];
foreach ($category as $c) {
$sortArry[$c['id']] = $c;
}
echo '<pre>';
print_r($sortArry);
array_multisort($sortArry);
print_r($sortArry);
exit;
將id作為鍵放在您的數組中,然后使用多排序。 它會工作。
這只是一個班輪
array_multisort( array_column($yourArray, "id"), SORT_ASC, $yourArray );
您也可以在這里找到它: http : //php.net/manual/en/function.array-multisort.php
在該手冊頁上搜索“ array_column”。
我用它來測試:
$yourArray = array (
"0" => Array
(
"id" => 83,
"value" => "Figures"
),
"1" => Array
(
"id" => 85,
"value" => "Toys"
),
"2" => Array
(
"id" => 36,
"value" => "Nintendo Switch"
)
);
array_multisort( array_column($yourArray, "id"), SORT_ASC, $yourArray );
print_r($yourArray);
結果是這樣的:
Array ( [0] => Array ( [id] => 36 [value] => Nintendo Switch )
[1] => Array ( [id] => 83 [value] => Figures )
[2] => Array ( [id] => 85 [value] => Toys ) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.