Как создать ArrayList из Массива в PowerShell?

Один из способов сделать это, используя данные вашего примера, - использовать дефис и использовать array_count_values ​​ в сочетании с array_values ​​ для сброса ключей.

Позже вы можете индексировать этот массив, чтобы получить количество циклов. Чтобы получить правильный индекс для $array_sku_new, $array_Title и $array_Description, вы можете использовать счетчик из цикла for и отдельный счетчик, чтобы получить правильный индекс для $array_sku_new.

Например:

$totals = array_values(array_count_values(array_map(function ($x) {
    return explode('-', $x)[0];
}, $array_sku_new)));


$counter = 0;
for ($j = 0; $j < count($totals); $j++) {
    for ($i = 0; $i < $totals[$j]; $i++) {
        $prod = array(
            'SKU' => $array_sku_new [$counter],
            'TITLE' => $array_Title [$j],
            'DESCRIPTION' => $array_Description [$j],
        );
        $prods[] = $prod;
        $counter ++;
    }
}

Php demo

20
задан Matt 5 February 2015 в 00:40
поделиться

1 ответ

Я не могу заставить того конструктора работать также. Это однако, кажется, работает:

# $temp = Get-ResourceFiles
$resourceFiles = New-Object System.Collections.ArrayList($null)
$resourceFiles.AddRange($temp)

можно также передать целое число в конструкторе для установки начальной способности.

, Что Вы имеете в виду, когда Вы говорите, Вы хотите перечислить файлы? Почему Вы не можете только проникнуть требуемые значения в новый массив?

Редактирование:

кажется, что можно использовать конструктора Array как это:

$resourceFiles = New-Object System.Collections.ArrayList(,$someArray)

Примечание запятая. Я верю тому, что происходит, то, что при вызове метода.NET Вы всегда передаете параметры как массив. PowerShell распаковывает тот массив и передает его методу как отдельные параметры. В этом случае мы не хотим, чтобы PowerShell распаковал массив; мы хотим передать массив как единый блок. Теперь, оператор запятой создает массивы. Таким образом, PowerShell распаковывает массив, тогда мы создаем массив снова с оператором запятой. Я думаю, именно это продолжается.

36
ответ дан 29 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

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