Member 13064822 Ответов: 4

Как написать реализацию функции


<?php
class FileOwners
{
    public static function groupByOwners($files)
    {
        return NULL;
    }
}

$files = array
(
    "Input.txt" => "Randy",
    "Code.py" => "Stan",
    "Output.txt" => "Randy"
);
var_dump(FileOwners::groupByOwners($files));


Реализовать а groupByOwners функция, которая:
1.принимает ассоциативный массив, содержащий имя владельца файла для каждого имени файла.
2.возвращает ассоциативный массив, содержащий массив имен файлов для каждого имени владельца в любом порядке.

Что я уже пробовал:

Цитата:
Например, что я думал, для ассоциативного массива ["Input.txt" => "Рэнди", "Code.py" => "Стэн", "Output.txt" => "Randy"] функция groupByOwners должна возвращать ["Randy" => ["Input.txt", "Output.txt"], "Stan" => ["Code.py"]].

4 Ответов

Рейтинг:
35

Peter Leow

Вам понадобится ассоциативный массив, где каждый ключ связан с массивом файлов, чтобы достичь этого, попробуйте следующее:

public static function groupByOwners($files)
{
	foreach($files as $file => $name) {
		
		if (isset($newArray[$name])) {
            // if key exists, add to its array of elements
			array_push($newArray[$name], $file);
		} else {
            // else create a new array element
			$newArray[$name] = array($file);
		}
	}

	return $newArray;
}


Рейтинг:
2

Member 14016851

публичная статическая функция groupByOwners($files) {

$file_return = [];
//print_r($файлы);

foreach ($files as $x => $x_value) {
если (array_key_exists($x_value, $file_return)) {
array_push($file_return[$x_value], $х);
} еще {
$file_return[$x_value] = массив();
array_push($file_return[$x_value], $х);
}
}
//print_r($file_return);

foreach ($file_return as $key => $value) {
if (isset($value[1])) {
$output = "['" . $ключ . "' => ['". $value[0] . "','" . $значение[1]".],";
//эхо"['" . $ключ . "' => ['". $value[0] . "','" . $значение[1]".],";
} еще {
$вывода = $выход. " '" . $ключ . "' => ['". $value[0] ."']]";
//Эхо " '". $ключ . "' => ['". $value[0] ."']]";
}
}
return $output;
}


Рейтинг:
2

Member 14798208

<?php

function groupByOwners(array $files) : array
{
    $list = [];
    foreach ($files as $key => $value) {
    	$list[$key][] = $value; 
    }
    return $list;
}

$files = array
(
    "Input.txt" => "Randy",
    "Code.py" => "Stan",
    "Output.txt" => "Randy"
);
var_dump(groupByOwners($files));


Рейтинг:
1

Member 13367166

class FileOwners
{
 public static function groupByOwners($files)
    {
        $result=array();
        foreach($files as $key=>$value)
        {
            $result[$value][]=$key;
        }
        return $result;
    }
}