@Kusoknogi

Как отобразить соответствия массива php?

задача - нужно отсортировать деревья-долгожителей и вывести на экран в начале названия деревьев по возрастанию. помогите пожалуйста. реальная задача огромная, это маленький примерчик
//деревья
$array=["Дуб","Ель","Ольха"];
//зафиксированы долгожители
$Dub=300;
$elka=250;
$olha=400;
$dolgozhitel[$Dub,$elka,$olha];
sort($dolgozhitel);
$derevo1=$dolgozhitel[0];
$derevo2=$dolgozhitel[1];
$derevo3=$dolgozhitel[1];

можно найти соответствия через ifelse, но когда у массива более 10 значений, это будет каша
  • Вопрос задан
  • 98 просмотров
Решения вопроса 2
flapflapjack
@flapflapjack
на треть я прав
данные на входе именно в виде
//деревья
$array=["Дуб","Ель","Ольха"];
//зафиксированы долгожители
$Dub=300;
$elka=250;
$olha=400;


? если да то фейспалм. Особенно
айти соответствия через ifelse,


Если еще что-то можно изменить, то
$trees=[
[
        'name'=>"Дуб",
        'years'=>300
],
[
        'name'=>"Ель",
        'years'=>250
],
[
        'name'=>"Ольха",
        'years'=>400
],
[
        'name'=>"Юкка",
        'years'=>250
]

];

function sort_trees($a,$b)
{
$a=$a['years'];
$b=$b['years'];
if ($a == $b) {
    return 0;
  }
  return ($a < $b) ? -1 : 1;
}

uasort($trees,'sort_trees');

foreach($trees as $tree)
{
print $tree['name']." живет ".$tree['years']." лет\n";
}


В моем примере, который я написал благодаря гуглению за 3 минуты, указывать деревья, и их долголетие можно в любом порядке. В вашем примере - хз как вообще такое в голову придет.

Предложенный мною массив с деревьями пополняется командой:
<?
$trees[]=['name'=>'Брюква', 'years'=>2];
$trees[]=['name'=>'Топинамбур', 'years'=>1];
и т.д.

Также можно упростить задачу, и воспользоваться ksort()
Ответ написан
@Kusoknogi Автор вопроса
нашел идеальное решение


$tree[]=array('age'=>180,'name'=>'Дуб');
	$tree[]=array('age'=>500,'name'=>'Ольха');
	$tree[]=array('age'=>150,'name'=>'Береза');
	$tree[]=array('age'=>480,'name'=>'Клён');
	$tree[]=array('age'=>390,'name'=>'Тополь');
$age  = array_column($tree, 'age');
$name = array_column($tree, 'name');
	array_multisort($age, SORT_ASC,$name, SORT_ASC, $tree);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
$dolgozhitel[$Dub,$elka,$olha];
все понятно, вам на фриланс
Ответ написан
@0ffff0
Предположим у нас есть входные данные, это два массива
$tree = ["ель","сосна","ольха","дуб","ясень","клен"] и $age = ["120","300","350","400"]

прежде чем мы сможем вывести информацию о деревьях-долгожителях, мы должны:
1 создать ассоцциативный двумерный массив, в котором возраст дерева был-бы ключом, а название значением
2 в случаях, когда встречаются деревья с одинаковой продолжительностью, класть их в одну ячейку, как подмассив
$array = [ $age[0] => [$tree[0], $tree[1]], $age[1] => $tree[2], $age[2] => [$tree[5],$tree[6]],$age[3] => $tree[3] ]


Предположим вы захотите узнать, какие деревья живут дольше 300 лет, обработайте массив, отрезав ненужное:
$current = array_slice($ar, 2, 3);
теперь, организуем цикл, чтобы вывести все данные:
foreach( $current as $key ){
    
         print_r($key);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы