Есть массив
$arr
у него несколько ключей
$arr['c']
и
$arr['m']
в них разные значения, мне нужно отсортировать по убыванию массив $arr['c']
то есть если
$arr['c'] = 0, $arr['m'] = 1
$arr['c'] = 0, $arr['m'] = 2
$arr['c'] = 7, $arr['m'] = 3
$arr['c'] = 2, $arr['m'] = 4
то будет
$arr['c'] = 7, $arr['m'] = 3
$arr['c'] = 2, $arr['m'] = 4
$arr['c'] = 0, $arr['m'] = 1
$arr['c'] = 0, $arr['m'] = 2
Код записи в массив
foreach ($result2 as $key2 => $value2) {
$arr[] = ['m'=>$value['manufacturer_id'],'c'=>$value2["COUNT(
product_id)"]];
}
print_r($arr)
Array (
[0] => Array ( [m] => 1 [c] => 7 ) )
Array (
[0] => Array ( [m] => 2 [c] => 0 ) )
Array (
[0] => Array ( [m] => 3 [c] => 0 ) )
Array (
[0] => Array ( [m] => 4 [c] => 0 ) )
Array (
[0] => Array ( [m] => 5 [c] => 13 ) )
Array (
[0] => Array ( [m] => 6 [c] => 1 ) )
Array (
[0] => Array ( [m] => 7 [c] => 7 ) )
Лично я использую функцию usort. Ей передаем массив и анонимную функцию сортировки.
$arr = array(
array('c' => 7, 'm' => 1),
array('c' => 0, 'm' => 2),
array('c' => 0, 'm' => 3),
array('c' => 0, 'm' => 4),
array('c' => 13, 'm' => 5),
array('c' => 1, 'm' => 6),
array('c' => 7, 'm' => 7),
);
usort($arr, function($a, $b) {
return $a['c'] < $b['c'];
});
На самом деле непонятно, зачем вы используете такую странную структуру данных для случая, когда элементы m
и c
являются связанными.
Я бы на вашем месте для начала преобразовал массив ['m'=>[values_m...],'c'=>[values_c...]]
к виду [['m'=>value_m, 'c'=>value_c]...]
, а потом, когда необходимо, использовал usort
PHP 7 Для 5 надо чуть поменять функцию сортировки в usort
$in = ['m'=>[values_m...],'c'=>[values_c...]];
$out = [];
for($i=0;$i<count($in['m']);$i++){
$out[] = ['m'=>$in['m'][$i], 'c'=>$in['c'][$i]];
}
usort($out, function($a, $b){ return $a['c'] <=> $b['c']; });
sandbox
Вот еще один вариант на php
<?php
$arr = array(
array('c' => 7, 'm' => 1),
array('c' => 0, 'm' => 2),
array('c' => 0, 'm' => 3),
array('c' => 0, 'm' => 4),
array('c' => 13, 'm' => 5),
array('c' => 1, 'm' => 6),
array('c' => 7, 'm' => 7),
);
usort($arr, function($a, $b) {
return $b['c'] - $a['c'];
});
echo '<pre>';
print_r($arr);
?>
Ваш код в исправленном виде:
foreach ($result_two as $key_two => $value_two) {
$arr['c'][] = $value_two["COUNT(product_id)"];
$arr['m'][] = $value['manufacturer_id'];
}
for($i=0; $i<count($arr['c']); $i++){
for($j=$i+1; $j<count($arr['c']); $j++){
if($arr['c'][$i]<$arr['c'][$j]){
$tempC = $arr['c'][$j];
$tempM = $arr['m'][$j];
$arr['c'][$j] = $arr['c'][$i];
$arr['m'][$j] = $arr['m'][$i];
$arr['c'][$i] = $tempC;
$arr['m'][$i] = $tempM;
}
}
}
print_r($arr);
На выходе $arr:
$arr['c'][] = 7; $arr['m'][] = 3;
$arr['c'][] = 2; $arr['m'][] = 4;
$arr['c'][] = 0; $arr['m'][] = 1;
$arr['c'][] = 0; $arr['m'][] = 2;
Массив ДО, из PHPStorm:
Array
(
[c] => Array
(
[0] => 0
[1] => 0
[2] => 7
[3] => 2
)
[m] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
)
Массив ПОСЛЕ, из PHPStorm:
Array
(
[c] => Array
(
[0] => 7
[1] => 2
[2] => 0
[3] => 0
)
[m] => Array
(
[0] => 3
[1] => 4
[2] => 1
[3] => 2
)
)
Добрый деньМожет быть вопрос покажется глупым или невозможным, но все-таки интересно
В wp-configphp указан DB_HOST как localhost